记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
565a2963
Commit
565a2963
authored
Apr 16, 2026
by
wangyifan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
草莓护照- home页 未绑定护照返回提示
parent
060e4490
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
38 additions
and
34 deletions
+38
-34
AdamCaomeiPassportUserServiceImpl.java
.../adam/service/impl/AdamCaomeiPassportUserServiceImpl.java
+37
-33
errors.properties
...et-service-adam-impl/src/main/resources/errors.properties
+1
-1
No files found.
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/service/impl/AdamCaomeiPassportUserServiceImpl.java
View file @
565a2963
...
...
@@ -3,12 +3,7 @@ package com.liquidnet.service.adam.service.impl;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.liquidnet.commons.lang.util.CurrentUtil
;
import
com.liquidnet.service.adam.dto.AdamCaomeiPassportUserBadgeDto
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportBadgeShelfItemVo
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportHomeVo
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportUserCardVo
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportUserClaimedBadgeVo
;
import
com.liquidnet.service.adam.dto.vo.AdamRealInfoVo
;
import
com.liquidnet.service.adam.dto.vo.AdamUserInfoVo
;
import
com.liquidnet.service.adam.dto.vo.*
;
import
com.liquidnet.service.adam.entity.AdamCaomeiBadge
;
import
com.liquidnet.service.adam.entity.AdamCaomeiPassport
;
import
com.liquidnet.service.adam.mapper.AdamCaomeiBadgeMapper
;
...
...
@@ -23,7 +18,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.*
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
...
...
@@ -42,12 +40,12 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ResponseDto
<
List
<
AdamCaomeiPassportUserClaimedBadgeVo
>>
bindPassport
(
String
passportNo
)
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
// 1. 先校验护照信息是否满足绑定条件
AdamCaomeiPassport
passport
=
adamCaomeiPassportMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
AdamCaomeiPassport
.
class
)
.
eq
(
AdamCaomeiPassport:
:
getPassportNo
,
passportNo
.
trim
()));
if
(
passport
==
null
)
{
log
.
error
(
"[bindPassport] 未查询到护照信息, passportSn: {}"
,
passportNo
);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10600"
));
...
...
@@ -66,7 +64,7 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
log
.
error
(
"[bindPassport] 护照已被其他账号绑定, passportSn: {}"
,
passportNo
);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10602"
));
}
// 2. 校验当前用户是否已经绑定过其他护照
AdamCaomeiPassport
userExistsPassport
=
findBoundPassportForUser
(
uid
);
if
(
userExistsPassport
!=
null
&&
!
passportNo
.
equals
(
userExistsPassport
.
getPassportNo
()))
{
...
...
@@ -76,7 +74,7 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
// 3. 尝试原子更新绑定状态 (仅当 status = 0 时才能更新成功)
int
updatedRows
=
adamCaomeiPassportMapper
.
bindPassportAtomic
(
passportNo
.
trim
(),
uid
);
if
(
updatedRows
>
0
)
{
// 4. 优先复用已上架徽章缓存,再筛选护照纪念徽章(type=1),用于批量发放和返回给前端弹窗
List
<
AdamCaomeiBadge
>
publishedBadges
=
adamRdmService
.
getPublishedCaomeiBadges
();
...
...
@@ -122,9 +120,18 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
String
uid
=
CurrentUtil
.
getCurrentUid
();
log
.
info
(
"[getPassportHome] 开始获取护照首页数据, uid: {}"
,
uid
);
// 4. 获取用户当前绑定的护照信息
AdamCaomeiPassport
bound
=
findBoundPassportForUser
(
uid
);
if
(
null
==
bound
)
{
log
.
error
(
"[getPassportHome] 用户未绑定护照, uid: {}"
,
uid
);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10604"
));
// 未绑定护照
}
// 1. 初始化返回对象
AdamCaomeiPassportHomeVo
home
=
new
AdamCaomeiPassportHomeVo
();
AdamCaomeiPassportUserCardVo
card
=
new
AdamCaomeiPassportUserCardVo
();
card
.
setPassportBound
(
true
);
card
.
setPassportNo
(
bound
.
getPassportNo
());
home
.
setUserCard
(
card
);
// 2. 获取用户基本信息(头像、昵称)
...
...
@@ -136,7 +143,7 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
card
.
setAvatar
(
""
);
card
.
setNickname
(
""
);
}
// 3. 获取用户实名认证信息
AdamRealInfoVo
real
=
adamRdmService
.
getRealInfoVoByUidPlain
(
uid
);
String
idCard
=
null
;
...
...
@@ -146,23 +153,12 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
idCard
=
real
.
getIdCard
();
}
card
.
setRealNameVerified
(
isRealNameVerified
);
log
.
info
(
"[getPassportHome] 实名认证状态, uid: {}, 是否已实名: {}, 是否有身份证号: {}"
,
uid
,
isRealNameVerified
,
StringUtils
.
isNotBlank
(
idCard
));
// 4. 获取用户当前绑定的护照信息
AdamCaomeiPassport
bound
=
findBoundPassportForUser
(
uid
);
boolean
isPassportBound
=
bound
!=
null
;
if
(
isPassportBound
)
{
card
.
setPassportBound
(
true
);
card
.
setPassportNo
(
bound
.
getPassportNo
());
}
else
{
card
.
setPassportBound
(
false
);
card
.
setPassportNo
(
""
);
}
log
.
info
(
"[getPassportHome] 护照绑定状态, uid: {}, 是否已绑定: {}, 护照编号: {}"
,
uid
,
isPassportBound
,
card
.
getPassportNo
());
log
.
info
(
"[getPassportHome] 实名认证状态, uid: {}, 是否已实名: {}, 是否有身份证号: {}"
,
uid
,
isRealNameVerified
,
StringUtils
.
isNotBlank
(
idCard
));
// 5. 查询用户购买过的演出ID列表 (用于判断演出徽章是否可认领)
final
List
<
String
>
paidPerformanceIds
=
StringUtils
.
isNotBlank
(
idCard
)
?
adamCaomeiBadgeMapper
.
selectPaidPerformanceIdsByIdCard
(
idCard
)
final
List
<
String
>
paidPerformanceIds
=
StringUtils
.
isNotBlank
(
idCard
)
?
adamCaomeiBadgeMapper
.
selectPaidPerformanceIdsByIdCard
(
idCard
)
:
new
ArrayList
<>();
log
.
info
(
"[getPassportHome] 用户已支付的演出订单数量, uid: {}, 数量: {}"
,
uid
,
paidPerformanceIds
.
size
());
...
...
@@ -198,7 +194,7 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
// 8. 组装全部上架徽章列表 (扁平结构,前端按 type 筛选展示)
List
<
AdamCaomeiPassportBadgeShelfItemVo
>
allBadges
=
published
.
stream
()
.
map
(
b
->
toShelfItem
(
b
,
claimedMap
,
isPassportBound
,
paidPerformanceIds
))
.
map
(
b
->
toShelfItem
(
b
,
claimedMap
,
paidPerformanceIds
))
.
collect
(
Collectors
.
toList
());
home
.
setAllBadges
(
allBadges
);
...
...
@@ -206,27 +202,35 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
return
ResponseDto
.
success
(
home
);
}
private
static
AdamCaomeiPassportBadgeShelfItemVo
toShelfItem
(
AdamCaomeiBadge
b
,
Map
<
String
,
AdamCaomeiPassportUserBadgeDto
>
claimedMap
,
boolean
isPassportBound
,
List
<
String
>
paidPerformanceIds
)
{
/**
* @param b 徽章信息
* @param claimedMap 用户已领取的徽章
* @param paidPerformanceIds 当前账号实名身份证号码购买的演出IDs
* @return
*/
private
static
AdamCaomeiPassportBadgeShelfItemVo
toShelfItem
(
AdamCaomeiBadge
b
,
Map
<
String
,
AdamCaomeiPassportUserBadgeDto
>
claimedMap
,
List
<
String
>
paidPerformanceIds
)
{
AdamCaomeiPassportBadgeShelfItemVo
v
=
new
AdamCaomeiPassportBadgeShelfItemVo
();
v
.
setBadgeId
(
b
.
getBadgeId
());
v
.
setName
(
StringUtils
.
defaultString
(
b
.
getName
()));
v
.
setIcon
(
StringUtils
.
defaultString
(
b
.
getIcon
()));
v
.
setType
(
b
.
getType
());
v
.
setPerformanceId
(
StringUtils
.
defaultString
(
b
.
getPerformanceId
()));
// 判断当前徽章是否已认领
AdamCaomeiPassportUserBadgeDto
got
=
claimedMap
.
get
(
b
.
getBadgeId
());
boolean
claimed
=
got
!=
null
;
v
.
setClaimed
(
claimed
);
v
.
setClaimedAt
(
claimed
?
got
.
getClaimedAt
()
:
null
);
int
type
=
b
.
getType
()
==
null
?
0
:
b
.
getType
();
// 针对未认领的徽章,根据类型判断是否可认领 (claimable)
if
(!
claimed
)
{
if
(
type
==
1
)
{
// 护照纪念徽章:只要绑定了护照,就可认领(通常是绑定时漏发或后来新上架的)
v
.
setClaimable
(
isPassportBound
);
v
.
setClaimable
(
true
);
}
else
if
(
type
==
2
)
{
// 演出纪念徽章:只要有对应演出的已支付购票记录,就可认领
v
.
setClaimable
(
paidPerformanceIds
!=
null
&&
paidPerformanceIds
.
contains
(
b
.
getPerformanceId
()));
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/resources/errors.properties
View file @
565a2963
...
...
@@ -91,7 +91,7 @@
10601
=
\u
8BE5
\u
62A4
\u7167\u
5DF2
\u
4F5C
\u
5E9F
10602
=
\u
8BE5
\u
62A4
\u7167\u
5DF2
\u
88AB
\u5176\u
4ED6
\u
8D26
\u
53F7
\u
7ED1
\u
5B9A
10603
=
\u
60A8
\u
5DF2
\u
7ED1
\u
5B9A
\u5176\u
4ED6
\u
62A4
\u7167\u
FF0C
\u
65E0
\u
6CD5
\u
91CD
\u
590D
\u
7ED1
\u
5B9A
10604
=
\u
6
2A4
\u7167\u
7F16
\u
53F7
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
10604
=
\u
6
72A
\u
7ED1
\u
5B9A
\u
62A4
\u7167
10605
=
\u
62A4
\u7167\u
7ED1
\u
5B9A
\u5931\u
8D25
\u
FF0C
\u
8BF7
\u
7A0D
\u
540E
\u
91CD
\u
8BD5
10606
=
\u
8BE5
\u
62A4
\u7167\u
5DF2
\u
4E0E
\u
60A8
\u
7ED1
\u
5B9A
\u
FF0C
\u
65E0
\u9700\u
91CD
\u
590D
\u
64CD
\u
4F5C
10607
=
\u
5FBD
\u
7AE0
\u
4E0D
\u
5B58
\u5728\u6216\u
672A
\u
4E0A
\u
67B6
...
...
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