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
979438b9
Commit
979438b9
authored
May 10, 2023
by
赵浩琳
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
用户端修改手机号
parent
67ce7215
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
173 additions
and
6 deletions
+173
-6
SmsController.java
...uantgroup/xyqb/controller/external/sms/SmsController.java
+6
-0
InnerController.java
...tgroup/xyqb/controller/internal/user/InnerController.java
+2
-2
ModifyPhoneNoController.java
...yqb/controller/modifyphoneno/ModifyPhoneNoController.java
+22
-0
ModifyPhoneRecord.java
.../xyqb/controller/modifyphoneno/req/ModifyPhoneRecord.java
+6
-0
UserModifyPhoneRecordResp.java
...troller/modifyphoneno/resp/UserModifyPhoneRecordResp.java
+12
-0
ModifyPhoneNo.java
src/main/java/cn/quantgroup/xyqb/entity/ModifyPhoneNo.java
+7
-0
UserModifyPhoneRecord.java
...java/cn/quantgroup/xyqb/entity/UserModifyPhoneRecord.java
+19
-0
ApplySource.java
...ain/java/cn/quantgroup/xyqb/entity/enums/ApplySource.java
+23
-0
IModifyPhoneRecordRepository.java
...ntgroup/xyqb/repository/IModifyPhoneRecordRepository.java
+6
-0
IModifyPhoneNoService.java
...n/quantgroup/xyqb/service/user/IModifyPhoneNoService.java
+5
-0
ModifyPhoneNoServiceImpl.java
...roup/xyqb/service/user/impl/ModifyPhoneNoServiceImpl.java
+65
-4
No files found.
src/main/java/cn/quantgroup/xyqb/controller/external/sms/SmsController.java
View file @
979438b9
...
...
@@ -24,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -83,6 +84,11 @@ public class SmsController implements IBaseController {
return
sendVerificationCode2
(
phoneNo
,
randomCode
,
appName
,
smsMerchant
);
}
@PostMapping
(
"/verify_sms_verification_code"
)
public
JsonResult
verifyCode
(
String
phoneNo
,
String
verificationCode
)
{
return
JsonResult
.
buildSuccessResult
(
"校验验证码"
,
smsService
.
verifyPhoneAndCode
(
phoneNo
,
verificationCode
));
}
/**
* 短信验证码 : 重置密码
*
...
...
src/main/java/cn/quantgroup/xyqb/controller/internal/user/InnerController.java
View file @
979438b9
...
...
@@ -206,13 +206,13 @@ public class InnerController implements IBaseController {
public
JsonResult
findByPhoneNo
(
String
phoneNo
,
Integer
tenantId
)
{
User
user
=
userService
.
findByPhoneInDb
(
phoneNo
);
if
(
user
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
"查无此人"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"查无此人"
,
null
,
4L
);
}
if
(
tenantId
!=
null
&&
!
TenantUtil
.
TENANT_DEFAULT
.
equals
(
tenantId
))
{
// userId 查询对应productLogin 获取手机号和customerId
user
=
tenantService
.
getTenantUser
(
user
,
tenantId
);
if
(
user
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
"查无此人"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"查无此人"
,
null
,
4L
);
}
}
UserRet
userRet
=
new
UserRet
(
user
);
...
...
src/main/java/cn/quantgroup/xyqb/controller/modifyphoneno/ModifyPhoneNoController.java
View file @
979438b9
...
...
@@ -133,6 +133,17 @@ public class ModifyPhoneNoController implements IBaseController {
return
JsonResult
.
buildSuccessResult
();
}
/**
* 用户端修改手机号
* @param modifyPhoneRecord
* @return
*/
@PostMapping
(
"/client/submitModify"
)
public
JsonResult
clientSubmitModify
(
@Valid
@RequestBody
ModifyPhoneRecord
modifyPhoneRecord
)
{
modifyPhoneNoService
.
clientSubmitModify
(
modifyPhoneRecord
);
return
JsonResult
.
buildSuccessResult
();
}
@PostMapping
(
"/modifyPhoneNolist"
)
public
JsonResult
getModifyPhoneNolist
(
@RequestParam
(
"userId"
)
Long
userId
,
@RequestParam
(
value
=
"pageNo"
,
defaultValue
=
"1"
,
required
=
false
)
int
pageNo
,
...
...
@@ -147,4 +158,15 @@ public class ModifyPhoneNoController implements IBaseController {
return
JsonResult
.
buildSuccessResult
(
"修改手机号列表"
,
pageData
);
}
@GetMapping
(
"/lastRecord"
)
public
JsonResult
getLastRecord
(
@RequestParam
(
"userId"
)
Long
userId
){
UserModifyPhoneRecordResp
resp
=
modifyPhoneNoService
.
getLastRecord
(
userId
);
return
JsonResult
.
buildSuccessResult
(
"最后修改记录"
,
resp
);
}
// @PostMapping("/rejectReason/save")
// public JsonResult saveRejectReason(){
//
// }
}
src/main/java/cn/quantgroup/xyqb/controller/modifyphoneno/req/ModifyPhoneRecord.java
View file @
979438b9
package
cn
.
quantgroup
.
xyqb
.
controller
.
modifyphoneno
.
req
;
import
cn.quantgroup.xyqb.entity.enums.ApplySource
;
import
cn.quantgroup.xyqb.entity.enums.Reason
;
import
cn.quantgroup.xyqb.util.ValidationUtil
;
import
lombok.Data
;
...
...
@@ -32,4 +33,9 @@ public class ModifyPhoneRecord implements Serializable {
// @NotBlank(message = "备注不能为空")
private
String
remark
;
/**
* 申请来源
*/
private
ApplySource
applySource
;
}
src/main/java/cn/quantgroup/xyqb/controller/modifyphoneno/resp/UserModifyPhoneRecordResp.java
View file @
979438b9
package
cn
.
quantgroup
.
xyqb
.
controller
.
modifyphoneno
.
resp
;
import
cn.quantgroup.xyqb.entity.enums.ApplySource
;
import
cn.quantgroup.xyqb.entity.enums.Reason
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
javax.persistence.Column
;
import
lombok.Data
;
import
java.sql.Timestamp
;
...
...
@@ -26,4 +29,13 @@ public class UserModifyPhoneRecordResp {
private
Timestamp
createdAt
;
private
Timestamp
updatedAt
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Timestamp
operationAt
;
private
ApplySource
applySource
;
private
Integer
applyStatus
;
private
String
applyStatusReason
;
}
src/main/java/cn/quantgroup/xyqb/entity/ModifyPhoneNo.java
View file @
979438b9
package
cn
.
quantgroup
.
xyqb
.
entity
;
import
cn.quantgroup.xyqb.entity.enums.ApplySource
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
java.io.Serializable
;
import
javax.persistence.Column
;
...
...
@@ -85,4 +86,10 @@ public class ModifyPhoneNo extends BaseEntity implements Serializable {
*/
@Column
(
name
=
"processing_status"
)
private
Integer
processingStatus
;
/**
* 申请来源
*/
@Column
(
name
=
"apply_source"
)
private
ApplySource
applySource
;
}
src/main/java/cn/quantgroup/xyqb/entity/UserModifyPhoneRecord.java
View file @
979438b9
package
cn
.
quantgroup
.
xyqb
.
entity
;
import
cn.quantgroup.xyqb.entity.enums.ApplySource
;
import
cn.quantgroup.xyqb.entity.enums.Reason
;
import
cn.quantgroup.xyqb.util.encrypt.CryptConverter
;
import
javax.persistence.Convert
;
...
...
@@ -40,4 +41,22 @@ public class UserModifyPhoneRecord extends BaseEntity implements Serializable {
@Column
(
name
=
"financial_response"
)
private
String
financialResponse
;
/**
* 申请来源
*/
@Column
(
name
=
"apply_source"
)
private
ApplySource
applySource
;
/**
* 申请状态 0处理中; 1修改完成; 2不允许修改;
*/
@Column
(
name
=
"apply_status"
)
private
Integer
applyStatus
;
/**
* 申请状态补充原因
*/
@Column
(
name
=
"apply_status_reason"
)
private
String
applyStatusReason
;
}
src/main/java/cn/quantgroup/xyqb/entity/enums/ApplySource.java
0 → 100644
View file @
979438b9
package
cn
.
quantgroup
.
xyqb
.
entity
.
enums
;
public
enum
ApplySource
{
CLIENT
(
"用户端"
),
BACKGROUND
(
"客服后台"
),
FINANCE_CLIENT
(
"金融用户端"
),
FINANCE_BACKGROUND
(
"金融客服后台"
),
;
private
final
String
name
;
ApplySource
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getName
()
{
return
name
;
}
@Override
public
String
toString
()
{
return
name
;
}
}
src/main/java/cn/quantgroup/xyqb/repository/IModifyPhoneRecordRepository.java
View file @
979438b9
...
...
@@ -3,7 +3,13 @@ package cn.quantgroup.xyqb.repository;
import
cn.quantgroup.xyqb.entity.UserModifyPhoneRecord
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.repository.query.Param
;
public
interface
IModifyPhoneRecordRepository
extends
JpaRepository
<
UserModifyPhoneRecord
,
Long
>,
JpaSpecificationExecutor
<
UserModifyPhoneRecord
>
{
@Query
(
nativeQuery
=
true
,
value
=
"select * from user_modify_phone_record "
+
"where user_id = :userId "
+
"order by created_at desc limit 1"
)
UserModifyPhoneRecord
findLastRecord
(
@Param
(
"userId"
)
Long
userId
);
}
src/main/java/cn/quantgroup/xyqb/service/user/IModifyPhoneNoService.java
View file @
979438b9
...
...
@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.service.user;
import
cn.quantgroup.xyqb.controller.modifyphoneno.req.*
;
import
cn.quantgroup.xyqb.controller.modifyphoneno.resp.ProgressResp
;
import
cn.quantgroup.xyqb.controller.modifyphoneno.resp.UserModifyPhoneRecordResp
;
import
cn.quantgroup.xyqb.entity.ModifyPhoneNo
;
import
cn.quantgroup.xyqb.entity.UserModifyPhoneRecord
;
import
org.springframework.data.domain.Page
;
...
...
@@ -37,4 +38,8 @@ public interface IModifyPhoneNoService {
void
financialSubmitModify
(
ModifyPhoneRecord
modifyPhoneRecord
);
Page
<
UserModifyPhoneRecord
>
query
(
Long
userId
,
int
pageNo
,
int
pageSize
);
void
clientSubmitModify
(
ModifyPhoneRecord
modifyPhoneRecord
);
UserModifyPhoneRecordResp
getLastRecord
(
Long
userId
);
}
src/main/java/cn/quantgroup/xyqb/service/user/impl/ModifyPhoneNoServiceImpl.java
View file @
979438b9
...
...
@@ -4,9 +4,11 @@ import cn.quantgroup.kms.qiniu.QiniuAuth;
import
cn.quantgroup.xyqb.aspect.limit.AccessLimit
;
import
cn.quantgroup.xyqb.controller.modifyphoneno.req.*
;
import
cn.quantgroup.xyqb.controller.modifyphoneno.resp.ProgressResp
;
import
cn.quantgroup.xyqb.controller.modifyphoneno.resp.UserModifyPhoneRecordResp
;
import
cn.quantgroup.xyqb.entity.ModifyPhoneNo
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.UserModifyPhoneRecord
;
import
cn.quantgroup.xyqb.entity.enums.ApplySource
;
import
cn.quantgroup.xyqb.entity.enums.Reason
;
import
cn.quantgroup.xyqb.exception.AppletException
;
import
cn.quantgroup.xyqb.exception.DataException
;
...
...
@@ -130,6 +132,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
modifyPhoneNo
.
setIdCardFaceUrl
(
step2Req
.
getIdCardFaceUrl
());
modifyPhoneNo
.
setIdCardRearUrl
(
step2Req
.
getIdCardRearUrl
());
modifyPhoneNo
.
setIdCardHoldUrl
(
step2Req
.
getIdCardHoldUrl
());
modifyPhoneNo
.
setApplySource
(
ApplySource
.
CLIENT
);
modifyPhoneNo
.
setApplyStatus
(
ModifyPhoneNoApplyStatusEnum
.
INIT
.
ordinal
());
modifyPhoneNo
.
setProcessingStatus
(
ModifyPhoneNoProcessingStatusEnum
.
INIT
.
ordinal
());
}
...
...
@@ -272,6 +275,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
public
void
submitModify
(
ModifyPhoneRecord
modifyPhoneRecord
)
{
String
lockKey
=
"modifyPhone:"
.
concat
(
modifyPhoneRecord
.
getCurPhoneNo
());
RedisLock
lock
=
new
RedisLock
(
redisTemplate
,
lockKey
);
modifyPhoneRecord
.
setApplySource
(
ApplySource
.
BACKGROUND
);
try
{
if
(
lock
.
lock
())
{
if
(
modifyPhoneRecord
.
getCurPhoneNo
().
equals
(
modifyPhoneRecord
.
getPrevPhoneNo
()))
{
...
...
@@ -302,19 +306,24 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
parameters
.
put
(
"changeRecord"
,
modifyPhoneRecord
.
getReason
().
toString
());
String
resultStr
=
httpService
.
postJson
(
userHost
+
"/api/finance-gateway/finance-user/shop/notify/changePhoneNo"
,
headers
,
parameters
);
JsonResult
resultStrJson
=
JSONObject
.
parseObject
(
resultStr
,
JsonResult
.
class
);
UserModifyPhoneRecord
record
=
new
UserModifyPhoneRecord
();
BeanUtils
.
copyProperties
(
modifyPhoneRecord
,
record
);
// 如果有返回值
if
(
"0000"
.
equals
(
resultStrJson
.
getBusinessCode
())
||
"4014"
.
equals
(
resultStrJson
.
getBusinessCode
()))
{
// 同步金融修改电商
userService
.
submitModifyPhone
(
modifyPhoneRecord
.
getPrevPhoneNo
(),
modifyPhoneRecord
.
getCurPhoneNo
());
UserModifyPhoneRecord
record
=
new
UserModifyPhoneRecord
();
BeanUtils
.
copyProperties
(
modifyPhoneRecord
,
record
);
record
.
setApplyStatus
(
ModifyPhoneNoApplyStatusEnum
.
DONE
.
ordinal
());
record
.
setFinancialResponse
(
JSONObject
.
toJSONString
(
resultStrJson
));
modifyPhoneRecordRepository
.
saveAndFlush
(
record
);
//登出此用户
sessionService
.
deleteByUserId
(
user
.
getId
());
}
else
{
String
msg
=
resultStrJson
.
getMsg
();
throw
new
DataException
(
"金融返回失败"
+
(
StringUtils
.
isNotBlank
(
msg
)
?
":"
+
msg
:
""
));
String
msg
=
"金融返回失败"
+
(
StringUtils
.
isNotBlank
(
resultStrJson
.
getMsg
())
?
":"
+
resultStrJson
.
getMsg
()
:
""
);
record
.
setApplyStatus
(
ModifyPhoneNoApplyStatusEnum
.
NO_ALLOW
.
ordinal
());
record
.
setFinancialResponse
(
JSONObject
.
toJSONString
(
resultStrJson
));
record
.
setApplyStatusReason
(
msg
);
modifyPhoneRecordRepository
.
saveAndFlush
(
record
);
throw
new
DataException
(
msg
);
}
}
...
...
@@ -350,6 +359,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
userService
.
submitModifyPhone
(
modifyPhoneRecord
.
getPrevPhoneNo
(),
modifyPhoneRecord
.
getCurPhoneNo
());
UserModifyPhoneRecord
record
=
new
UserModifyPhoneRecord
();
BeanUtils
.
copyProperties
(
modifyPhoneRecord
,
record
);
record
.
setApplyStatus
(
ModifyPhoneNoApplyStatusEnum
.
DONE
.
ordinal
());
record
.
setUserId
(
user
.
getId
());
modifyPhoneRecordRepository
.
saveAndFlush
(
record
);
//登出此用户
...
...
@@ -378,6 +388,57 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
return
userModifyPhoneRecord
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
clientSubmitModify
(
ModifyPhoneRecord
modifyPhoneRecord
)
{
String
lockKey
=
"modifyPhone:"
.
concat
(
modifyPhoneRecord
.
getCurPhoneNo
());
RedisLock
lock
=
new
RedisLock
(
redisTemplate
,
lockKey
);
try
{
if
(
lock
.
lock
())
{
if
(
modifyPhoneRecord
.
getCurPhoneNo
().
equals
(
modifyPhoneRecord
.
getPrevPhoneNo
()))
{
throw
new
DataException
(
"新手机号已存在,不支持更换"
);
}
User
user
=
userService
.
findByPhoneInDb
(
modifyPhoneRecord
.
getPrevPhoneNo
());
if
(
user
==
null
)
{
throw
new
AppletException
(
"用户不存在"
,
"1001"
);
}
if
(!
modifyPhoneRecord
.
getPrevPhoneNo
().
equals
(
user
.
getPhoneNo
())
&&
!
modifyPhoneRecord
.
getPrevPhoneNo
().
equals
(
user
.
getEncryptedPhoneNo
()))
{
throw
new
DataException
(
"原手机号填写不符"
);
}
userService
.
submitModifyPhone
(
modifyPhoneRecord
.
getPrevPhoneNo
(),
modifyPhoneRecord
.
getCurPhoneNo
());
UserModifyPhoneRecord
record
=
new
UserModifyPhoneRecord
();
BeanUtils
.
copyProperties
(
modifyPhoneRecord
,
record
);
record
.
setUserId
(
user
.
getId
());
record
.
setApplyStatus
(
ModifyPhoneNoApplyStatusEnum
.
DONE
.
ordinal
());
record
.
setApplySource
(
ApplySource
.
CLIENT
);
modifyPhoneRecordRepository
.
saveAndFlush
(
record
);
//登出此用户
sessionService
.
deleteByUserId
(
user
.
getId
());
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
"用户端修改手机号失败--{}, 原因:---"
,
JSONObject
.
toJSONString
(
modifyPhoneRecord
),
e
);
String
failString
=
String
.
format
(
"用户端修改手机号失败--%s"
,
e
.
getMessage
());
throw
new
DataException
(
failString
);
}
finally
{
lock
.
unlock
();
}
}
@Override
public
UserModifyPhoneRecordResp
getLastRecord
(
Long
userId
)
{
UserModifyPhoneRecord
lastRecord
=
modifyPhoneRecordRepository
.
findLastRecord
(
userId
);
UserModifyPhoneRecordResp
userModifyPhoneRecordResp
=
new
UserModifyPhoneRecordResp
();
userModifyPhoneRecordResp
.
setId
(
lastRecord
.
getId
());
userModifyPhoneRecordResp
.
setUserId
(
lastRecord
.
getUserId
());
userModifyPhoneRecordResp
.
setPrevPhoneNo
(
lastRecord
.
getPrevPhoneNo
());
userModifyPhoneRecordResp
.
setCurPhoneNo
(
lastRecord
.
getCurPhoneNo
());
userModifyPhoneRecordResp
.
setReason
(
lastRecord
.
getReason
().
name
());
userModifyPhoneRecordResp
.
setRemark
(
lastRecord
.
getRemark
());
userModifyPhoneRecordResp
.
setOperationAt
(
lastRecord
.
getCreatedAt
());
return
userModifyPhoneRecordResp
;
}
private
Pageable
getPageable
(
int
currentPage
,
int
pageSize
)
{
return
new
PageRequest
(
currentPage
-
1
,
pageSize
,
new
Sort
(
Sort
.
Direction
.
DESC
,
"id"
));
}
...
...
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