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
89832dd7
Commit
89832dd7
authored
Dec 05, 2017
by
贷前—徐菲
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改用户信息,review
parent
a8bdc354
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
142 additions
and
62 deletions
+142
-62
Constants.java
src/main/java/cn/quantgroup/xyqb/Constants.java
+1
-1
InnerController.java
...tgroup/xyqb/controller/external/user/InnerController.java
+80
-12
IUserDetailRepository.java
.../cn/quantgroup/xyqb/repository/IUserDetailRepository.java
+5
-0
IUserRepository.java
...n/java/cn/quantgroup/xyqb/repository/IUserRepository.java
+7
-0
IWeChatUserRepository.java
.../cn/quantgroup/xyqb/repository/IWeChatUserRepository.java
+1
-1
IUserDetailService.java
...a/cn/quantgroup/xyqb/service/user/IUserDetailService.java
+10
-0
IUserService.java
...in/java/cn/quantgroup/xyqb/service/user/IUserService.java
+7
-0
UserDetailServiceImpl.java
...ntgroup/xyqb/service/user/impl/UserDetailServiceImpl.java
+18
-4
UserServiceImpl.java
...cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
+7
-0
IWechatService.java
...ava/cn/quantgroup/xyqb/service/wechat/IWechatService.java
+1
-1
WechatServiceImpl.java
...uantgroup/xyqb/service/wechat/impl/WechatServiceImpl.java
+2
-2
AESUtil.java
src/main/java/cn/quantgroup/xyqb/util/AESUtil.java
+3
-41
No files found.
src/main/java/cn/quantgroup/xyqb/Constants.java
View file @
89832dd7
...
...
@@ -93,5 +93,5 @@ public interface Constants {
String
REPAY_SMS
=
"用户您好,您在信用钱包的本期账单已还款成功,保持良好的信用可升级为VIP用户,享更多特权,感谢您对信用钱包的支持"
;
}
String
aesKey
=
"ScnmRBhuQpo9kBdn"
;
String
AES_KEY
=
"ScnmRBhuQpo9kBdn"
;
}
src/main/java/cn/quantgroup/xyqb/controller/external/user/InnerController.java
View file @
89832dd7
...
...
@@ -8,6 +8,7 @@ import cn.quantgroup.xyqb.controller.IBaseController;
import
cn.quantgroup.xyqb.entity.*
;
import
cn.quantgroup.xyqb.entity.enumerate.*
;
import
cn.quantgroup.xyqb.model.*
;
import
cn.quantgroup.xyqb.repository.IUserDetailRepository
;
import
cn.quantgroup.xyqb.service.api.IUserApiService
;
import
cn.quantgroup.xyqb.service.auth.IIdCardService
;
import
cn.quantgroup.xyqb.service.http.IHttpService
;
...
...
@@ -38,6 +39,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
import
java.sql.Timestamp
;
import
java.text.ParseException
;
...
...
@@ -957,23 +959,89 @@ public class InnerController implements IBaseController {
}
@RequestMapping
(
"/forbiddenUserWeChat"
)
public
JsonResult
forbiddenUserWeChat
(
@RequestParam
Long
userId
,
@RequestParam
String
reason
,
@RequestParam
String
content
,
HttpServletRequest
request
)
{
LOGGER
.
info
(
"请求的ip:IPUtil.getRemoteIP(request):{}"
,
IPUtil
.
getRemoteIP
(
request
));
if
(
null
!=
content
){
content
=
content
.
replace
(
" "
,
"+"
);
}
LOGGER
.
info
(
content
);
String
str
=
AESUtil
.
decryptAfterBase64Decode
(
content
,
Constants
.
aesKey
);
if
(
null
==
str
||!
str
.
equals
(
userId
.
toString
())){
public
JsonResult
forbiddenUserWeChat
(
@RequestParam
Long
userId
,
@RequestParam
String
reason
,
@RequestParam
String
content
)
{
if
(
StringUtils
.
isBlank
(
reason
)
||
null
==
userId
||
userId
<=
0
)
{
return
JsonResult
.
buildErrorStateResult
(
"参数有误"
,
null
);
}
if
(
null
==
userId
||
userId
<=
0
||
StringUtils
.
isEmpty
(
reason
))
{
//密文
if
(
null
!=
content
)
{
content
=
content
.
replaceAll
(
" "
,
"+"
);
}
String
str
=
AESUtil
.
decryptAfterBase64Decode
(
content
,
Constants
.
AES_KEY
);
if
(
null
==
str
||
!
str
.
equals
(
userId
.
toString
()))
{
return
JsonResult
.
buildErrorStateResult
(
"解密有误"
,
null
);
}
int
affectedRows
=
wechatService
.
forbiddenUserWeChat
(
userId
);
LOGGER
.
info
(
"用户微信禁用,userId:{},禁用的原因reason:{},受影响的行数affectedRows:{}"
,
userId
,
reason
,
affectedRows
);
return
JsonResult
.
buildSuccessResult
(
"用户禁用微信成功"
,
affectedRows
);
}
@RequestMapping
(
"/updateIdCard"
)
public
JsonResult
updateIdCard
(
@RequestParam
String
name
,
@RequestParam
String
idNo
,
@RequestParam
String
phoneNo
,
@RequestParam
String
reason
,
@RequestParam
String
content
)
{
//密文
if
(
null
!=
content
)
{
content
=
content
.
replaceAll
(
" "
,
"+"
);
}
String
str
=
AESUtil
.
decryptAfterBase64Decode
(
content
,
Constants
.
AES_KEY
);
if
(
null
==
str
||
!
str
.
equals
(
phoneNo
))
{
return
JsonResult
.
buildErrorStateResult
(
"解密有误"
,
null
);
}
if
(
StringUtils
.
isBlank
(
name
)
||
StringUtils
.
isBlank
(
idNo
)
||
StringUtils
.
isBlank
(
phoneNo
)
||
StringUtils
.
isBlank
(
reason
))
{
return
JsonResult
.
buildErrorStateResult
(
"参数有误"
,
null
);
}
wechatService
.
forbiddenUserWeChat
(
userId
);
return
JsonResult
.
buildSuccessResult
(
"用户禁用微信成功"
,
null
);
if
(!
ValidationUtil
.
validatePhoneNo
(
phoneNo
))
{
LOGGER
.
info
(
"手机号有误, phoneNo:{}"
,
phoneNo
);
return
JsonResult
.
buildErrorStateResult
(
"用户手机号错误"
,
null
);
}
if
(!
ValidationUtil
.
validateChinese
(
name
))
{
LOGGER
.
info
(
"名字有误, name:{}"
,
name
);
return
JsonResult
.
buildErrorStateResult
(
"用户姓名错误"
,
null
);
}
int
affectedRows
=
userDetailService
.
updateIdCard
(
name
,
idNo
,
phoneNo
);
LOGGER
.
info
(
"更新用户的信息,name;{},idNo:{},phoneNo:{},操作的理由reason:{},受影响的行数affectedRows:{}"
,
name
,
idNo
,
phoneNo
,
reason
,
affectedRows
);
ImmutableMap
.
Builder
<
String
,
String
>
builder
=
ImmutableMap
.
builder
();
builder
.
put
(
"phoneNo"
,
phoneNo
);
builder
.
put
(
"name"
,
name
);
builder
.
put
(
"idNo"
,
idNo
);
builder
.
put
(
"reason"
,
reason
);
builder
.
put
(
"content"
,
content
);
LOGGER
.
info
(
"去清除函谷关的缓存"
);
Map
<
String
,
String
>
param
=
builder
.
build
();
httpService
.
get
(
hanguguanUrl
.
concat
(
"/innerapi/updateIdCard"
),
param
);
return
JsonResult
.
buildSuccessResult
(
"修改用户身份证号成功"
,
affectedRows
);
}
@RequestMapping
(
"/forbiddenUserOrNot"
)
public
JsonResult
forbiddenUserOrNot
(
@RequestParam
String
phoneNo
,
@RequestParam
Boolean
enable
,
@RequestParam
String
reason
,
@RequestParam
String
content
)
{
if
(
StringUtils
.
isBlank
(
phoneNo
)
||
StringUtils
.
isBlank
(
reason
))
{
return
JsonResult
.
buildErrorStateResult
(
"参数有误"
,
null
);
}
//密文
if
(
null
!=
content
)
{
content
=
content
.
replaceAll
(
" "
,
"+"
);
}
String
str
=
AESUtil
.
decryptAfterBase64Decode
(
content
,
Constants
.
AES_KEY
);
if
(
null
==
str
||
!
str
.
equals
(
phoneNo
))
{
return
JsonResult
.
buildErrorStateResult
(
"解密有误"
,
null
);
}
if
(!
ValidationUtil
.
validatePhoneNo
(
phoneNo
))
{
LOGGER
.
info
(
"用户手机号错误, phoneNo:{}"
,
phoneNo
);
return
JsonResult
.
buildErrorStateResult
(
"用户手机号错误"
,
null
);
}
int
affectedRows
=
userService
.
forbiddenUser
(
enable
,
phoneNo
);
LOGGER
.
info
(
"禁用或者重启用户的理由,reason:{},手机号phoneNo:{},受影响的行数affectedRows:{}"
,
reason
,
phoneNo
,
affectedRows
);
ImmutableMap
.
Builder
<
String
,
String
>
builder
=
ImmutableMap
.
builder
();
builder
.
put
(
"phoneNo"
,
phoneNo
);
builder
.
put
(
"enable"
,
String
.
valueOf
(
enable
));
builder
.
put
(
"reason"
,
reason
);
builder
.
put
(
"content"
,
content
);
LOGGER
.
info
(
"去清除函谷关的缓存"
);
Map
<
String
,
String
>
param
=
builder
.
build
();
httpService
.
get
(
hanguguanUrl
.
concat
(
"/innerapi/forbiddenUserOrNot"
),
param
);
return
JsonResult
.
buildSuccessResult
(
"用户禁用或重启成功成功"
,
affectedRows
);
}
}
\ No newline at end of file
src/main/java/cn/quantgroup/xyqb/repository/IUserDetailRepository.java
View file @
89832dd7
...
...
@@ -39,4 +39,9 @@ public interface IUserDetailRepository extends JpaRepository<UserDetail, Long>,J
@Modifying
@Query
(
value
=
"select * from user_detail where gender!=1 and gender!=2 and id_no is not null"
,
nativeQuery
=
true
)
List
<
UserDetail
>
selectUserDetailsBy
();
@Transactional
@Modifying
@Query
(
value
=
"update user_detail set name=?1,id_no=?2,gender=?3 where phone_no=?4"
,
nativeQuery
=
true
)
int
updateIdNoByPhoneNo
(
String
name
,
String
idNo
,
String
gender
,
String
phoneNo
);
}
src/main/java/cn/quantgroup/xyqb/repository/IUserRepository.java
View file @
89832dd7
...
...
@@ -3,7 +3,9 @@ package cn.quantgroup.xyqb.repository;
import
cn.quantgroup.xyqb.entity.User
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.Modifying
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
...
...
@@ -23,4 +25,9 @@ public interface IUserRepository extends JpaRepository<User, Long>, JpaSpecifica
@Query
(
value
=
"select * from user where created_at>=?1 and created_at<?2 "
,
nativeQuery
=
true
)
List
<
User
>
findRegisterUserByTime
(
String
beginTime
,
String
endTime
);
@Transactional
@Modifying
@Query
(
value
=
"update user set enable=?1 where phone_no=?2"
,
nativeQuery
=
true
)
int
forbiddenUser
(
Boolean
enable
,
String
phoneNo
);
}
src/main/java/cn/quantgroup/xyqb/repository/IWeChatUserRepository.java
View file @
89832dd7
...
...
@@ -18,5 +18,5 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
@Transactional
@Modifying
void
removeByUserId
(
Long
userId
);
int
removeByUserId
(
Long
userId
);
}
src/main/java/cn/quantgroup/xyqb/service/user/IUserDetailService.java
View file @
89832dd7
...
...
@@ -36,4 +36,14 @@ public interface IUserDetailService {
*/
void
fixedIdNoAndGender
();
/**
* 更新用户的身份证号
*
* @param name name
* @param idNo idNo
* @param phoneNo phoneNo
* @return 受影响的行数
*/
int
updateIdCard
(
String
name
,
String
idNo
,
String
phoneNo
);
}
src/main/java/cn/quantgroup/xyqb/service/user/IUserService.java
View file @
89832dd7
...
...
@@ -70,4 +70,11 @@ public interface IUserService {
List
<
User
>
findRegisterUserByTime
(
String
beginTime
,
String
endTime
);
/**
* 禁用用户
*
* @param phoneNo 电话号码
*/
int
forbiddenUser
(
Boolean
enable
,
String
phoneNo
);
}
src/main/java/cn/quantgroup/xyqb/service/user/impl/UserDetailServiceImpl.java
View file @
89832dd7
package
cn
.
quantgroup
.
xyqb
.
service
.
user
.
impl
;
import
cn.quantgroup.xyqb.controller.ExceptionHandlingController
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.UserDetail
;
import
cn.quantgroup.xyqb.model.Gender
;
import
cn.quantgroup.xyqb.model.UserQueryInfo
;
import
cn.quantgroup.xyqb.repository.IUserDetailRepository
;
import
cn.quantgroup.xyqb.repository.IUserRepository
;
import
cn.quantgroup.xyqb.service.auth.IIdCardService
;
...
...
@@ -20,7 +18,6 @@ import javax.persistence.criteria.CriteriaBuilder;
import
javax.persistence.criteria.CriteriaQuery
;
import
javax.persistence.criteria.Predicate
;
import
javax.persistence.criteria.Root
;
import
javax.transaction.Transactional
;
import
org.apache.commons.lang.StringUtils
;
import
org.slf4j.Logger
;
...
...
@@ -29,7 +26,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.dao.DataIntegrityViolationException
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.stereotype.Service
;
...
...
@@ -205,4 +201,22 @@ public class UserDetailServiceImpl implements IUserDetailService {
LOGGER
.
info
(
"修复用户老数据身份证号完成"
);
}
}
@Override
public
int
updateIdCard
(
String
name
,
String
idNo
,
String
phoneNo
)
{
String
lastChar
=
""
;
if
(
idNo
.
length
()
==
18
)
{
lastChar
=
idNo
.
substring
(
16
,
17
).
toLowerCase
();
}
else
if
(
idNo
.
length
()
==
15
)
{
lastChar
=
idNo
.
substring
(
13
,
14
).
toLowerCase
();
}
// 判断男女
if
(
Integer
.
parseInt
(
lastChar
)
%
2
==
0
)
{
//女
return
userDetailRepository
.
updateIdNoByPhoneNo
(
name
,
idNo
,
"1"
,
phoneNo
);
}
else
{
//男
return
userDetailRepository
.
updateIdNoByPhoneNo
(
name
,
idNo
,
"2"
,
phoneNo
);
}
}
}
src/main/java/cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
View file @
89832dd7
...
...
@@ -396,4 +396,11 @@ public class UserServiceImpl implements IUserService {
count
++;
}
}
@Override
@CacheEvict
(
value
=
"usercache"
,
key
=
"'xyqbuser' + #phoneNo"
,
cacheManager
=
"cacheManager"
)
public
int
forbiddenUser
(
Boolean
enable
,
String
phoneNo
)
{
return
userRepository
.
forbiddenUser
(
enable
,
phoneNo
);
}
}
src/main/java/cn/quantgroup/xyqb/service/wechat/IWechatService.java
View file @
89832dd7
...
...
@@ -19,5 +19,5 @@ public interface IWechatService {
WechatUserInfo
queryOpenIdByUserId
(
Long
userId
);
void
forbiddenUserWeChat
(
Long
userId
);
int
forbiddenUserWeChat
(
Long
userId
);
}
src/main/java/cn/quantgroup/xyqb/service/wechat/impl/WechatServiceImpl.java
View file @
89832dd7
...
...
@@ -141,7 +141,7 @@ public class WechatServiceImpl implements IWechatService {
@Override
public
void
forbiddenUserWeChat
(
Long
userId
)
{
weChatUserRepository
.
removeByUserId
(
userId
);
public
int
forbiddenUserWeChat
(
Long
userId
)
{
return
weChatUserRepository
.
removeByUserId
(
userId
);
}
}
src/main/java/cn/quantgroup/xyqb/util/AESUtil.java
View file @
89832dd7
...
...
@@ -26,45 +26,7 @@ public class AESUtil {
/**
* 编码格式
*/
private
static
final
String
data_encoding
=
"utf-8"
;
/**
* 数据加密
* @param data 待加密的数据
* @param key 加密使用的KEY
* @return 加密之后的数据
*/
public
static
String
encryptAndBase64Encode
(
String
data
,
String
key
)
{
try
{
return
encryptAndBase64Encode
(
data
.
getBytes
(
data_encoding
),
key
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 对字节数组加密
* @param data
* @param key
* @return
*/
public
static
String
encryptAndBase64Encode
(
byte
[]
data
,
String
key
)
{
try
{
if
(
key
==
null
||
""
.
equals
(
key
.
trim
().
length
()))
{
return
null
;
}
byte
[]
raw
=
key
.
getBytes
(
data_encoding
);
SecretKeySpec
skeySpec
=
new
SecretKeySpec
(
raw
,
KEY_ALGORITHM
);
Cipher
cipher
=
Cipher
.
getInstance
(
CIPHER_ALGORITHM
);
cipher
.
init
(
Cipher
.
ENCRYPT_MODE
,
skeySpec
);
byte
[]
encrypted
=
cipher
.
doFinal
(
data
);
return
new
Base64
().
encodeToString
(
encrypted
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
private
static
final
String
DATA_ENCODING
=
"utf-8"
;
/**
* 数据解密,返回字符串
...
...
@@ -76,7 +38,7 @@ public class AESUtil {
try
{
byte
[]
bytes
=
decryptAfterBase64DecodeToByte
(
data
,
key
);
if
(
bytes
!=
null
&&
bytes
.
length
>
0
){
return
new
String
(
bytes
,
data_encoding
);
return
new
String
(
bytes
,
DATA_ENCODING
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
...
...
@@ -95,7 +57,7 @@ public class AESUtil {
if
(
key
==
null
||
""
.
equals
(
key
.
trim
().
length
()))
{
return
null
;
}
byte
[]
raw
=
key
.
getBytes
(
data_encoding
);
byte
[]
raw
=
key
.
getBytes
(
DATA_ENCODING
);
SecretKeySpec
skeySpec
=
new
SecretKeySpec
(
raw
,
KEY_ALGORITHM
);
Cipher
cipher
=
Cipher
.
getInstance
(
CIPHER_ALGORITHM
);
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
skeySpec
);
...
...
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