记得上下班打卡 | 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
060e4490
Commit
060e4490
authored
Apr 16, 2026
by
wangyifan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
草莓护照- 徽章信息缓存
parent
1c969740
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
177 additions
and
15 deletions
+177
-15
AdamRedisConst.java
...a/com/liquidnet/service/adam/constant/AdamRedisConst.java
+2
-0
IAdamCaomeiPassportUserService.java
.../service/adam/service/IAdamCaomeiPassportUserService.java
+4
-1
IAdamCaomeiBadgeAdminService.java
...n/zhengzai/adam/service/IAdamCaomeiBadgeAdminService.java
+6
-0
AdamCaomeiBadgeAdminServiceImpl.java
...ai/adam/service/impl/AdamCaomeiBadgeAdminServiceImpl.java
+30
-0
AdamCaomeiBadgeMapper.java
.../liquidnet/service/adam/mapper/AdamCaomeiBadgeMapper.java
+14
-0
AdamCaomeiPassportUserController.java
...ice/adam/controller/AdamCaomeiPassportUserController.java
+3
-1
AdamRdmService.java
...va/com/liquidnet/service/adam/service/AdamRdmService.java
+75
-0
AdamCaomeiBadgeUserServiceImpl.java
...ice/adam/service/impl/AdamCaomeiBadgeUserServiceImpl.java
+2
-0
AdamCaomeiPassportUserServiceImpl.java
.../adam/service/impl/AdamCaomeiPassportUserServiceImpl.java
+41
-13
No files found.
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/constant/AdamRedisConst.java
View file @
060e4490
...
@@ -20,6 +20,8 @@ public class AdamRedisConst {
...
@@ -20,6 +20,8 @@ public class AdamRedisConst {
public
static
final
String
INFO_THIRD_PARTY
=
PREFIX
.
concat
(
"info:third_party:"
);
public
static
final
String
INFO_THIRD_PARTY
=
PREFIX
.
concat
(
"info:third_party:"
);
public
static
final
String
INFO_ENTERS
=
PREFIX
.
concat
(
"info:enters:"
);
public
static
final
String
INFO_ENTERS
=
PREFIX
.
concat
(
"info:enters:"
);
public
static
final
String
INFO_ADDRESSES
=
PREFIX
.
concat
(
"info:addresses:"
);
public
static
final
String
INFO_ADDRESSES
=
PREFIX
.
concat
(
"info:addresses:"
);
public
static
final
String
INFO_CAOMEI_BADGE_PUBLISHED
=
PREFIX
.
concat
(
"info:caomei:badge:published"
);
public
static
final
String
INFO_CAOMEI_BADGE_USER
=
PREFIX
.
concat
(
"info:caomei:badge:user:"
);
/**
/**
* {adam:info:biz:{uid},List<com.liquidnet.service.adam.dto.vo.AdamUserBizAcctVo>}
* {adam:info:biz:{uid},List<com.liquidnet.service.adam.dto.vo.AdamUserBizAcctVo>}
*/
*/
...
...
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/service/IAdamCaomeiPassportUserService.java
View file @
060e4490
package
com
.
liquidnet
.
service
.
adam
.
service
;
package
com
.
liquidnet
.
service
.
adam
.
service
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportHomeVo
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportHomeVo
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportUserClaimedBadgeVo
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.ResponseDto
;
import
java.util.List
;
/**
/**
* 草莓护照(用户端)
* 草莓护照(用户端)
*/
*/
...
@@ -11,7 +14,7 @@ public interface IAdamCaomeiPassportUserService {
...
@@ -11,7 +14,7 @@ public interface IAdamCaomeiPassportUserService {
/**
/**
* 绑定实体护照:校验编号有效性、是否可绑;通过则写入并发放已上架护照纪念徽章(type=1)
* 绑定实体护照:校验编号有效性、是否可绑;通过则写入并发放已上架护照纪念徽章(type=1)
*/
*/
ResponseDto
<
String
>
bindPassport
(
String
passportNo
);
ResponseDto
<
List
<
AdamCaomeiPassportUserClaimedBadgeVo
>
>
bindPassport
(
String
passportNo
);
/**
/**
* 护照首页:个人信息、实名状态、已认领墙、按类型分组的全部上架徽章
* 护照首页:个人信息、实名状态、已认领墙、按类型分组的全部上架徽章
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/adam/service/IAdamCaomeiBadgeAdminService.java
View file @
060e4490
...
@@ -26,4 +26,10 @@ public interface IAdamCaomeiBadgeAdminService extends IService<AdamCaomeiBadge>
...
@@ -26,4 +26,10 @@ public interface IAdamCaomeiBadgeAdminService extends IService<AdamCaomeiBadge>
* @return
* @return
*/
*/
PageInfo
<
AdamCaomeiBadgeClaimUserVo
>
listClaimUsers
(
AdamCaomeiBadgeClaimUserSearchParam
param
);
PageInfo
<
AdamCaomeiBadgeClaimUserVo
>
listClaimUsers
(
AdamCaomeiBadgeClaimUserSearchParam
param
);
/**
* 清除用户端「上架草莓徽章列表」Redis 缓存,与 adam 侧 {@code AdamRdmService#delPublishedCaomeiBadges} 一致。
* 后台新增/编辑/上下架成功后应调用,避免用户端仍读到旧列表。
*/
void
delPublishedCaomeiBadges
();
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/adam/service/impl/AdamCaomeiBadgeAdminServiceImpl.java
View file @
060e4490
...
@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
...
@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.github.pagehelper.PageInfo
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamCaomeiBadgeAdminService
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamCaomeiBadgeAdminService
;
import
com.liquidnet.common.cache.redis.util.RedisDataSourceUtil
;
import
com.liquidnet.service.adam.constant.AdamRedisConst
;
import
com.liquidnet.service.adam.dto.AdamCaomeiBadgeClaimCountDto
;
import
com.liquidnet.service.adam.dto.AdamCaomeiBadgeClaimCountDto
;
import
com.liquidnet.service.adam.dto.AdamCaomeiBadgeClaimUserDto
;
import
com.liquidnet.service.adam.dto.AdamCaomeiBadgeClaimUserDto
;
import
com.liquidnet.service.adam.dto.param.AdamCaomeiBadgeClaimUserSearchParam
;
import
com.liquidnet.service.adam.dto.param.AdamCaomeiBadgeClaimUserSearchParam
;
...
@@ -16,6 +18,7 @@ import com.liquidnet.service.adam.mapper.AdamCaomeiBadgeMapper;
...
@@ -16,6 +18,7 @@ import com.liquidnet.service.adam.mapper.AdamCaomeiBadgeMapper;
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.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.Collections
;
import
java.util.Collections
;
...
@@ -26,6 +29,33 @@ import java.util.stream.Collectors;
...
@@ -26,6 +29,33 @@ import java.util.stream.Collectors;
@Slf4j
@Slf4j
@Service
@Service
public
class
AdamCaomeiBadgeAdminServiceImpl
extends
ServiceImpl
<
AdamCaomeiBadgeMapper
,
AdamCaomeiBadge
>
implements
IAdamCaomeiBadgeAdminService
{
public
class
AdamCaomeiBadgeAdminServiceImpl
extends
ServiceImpl
<
AdamCaomeiBadgeMapper
,
AdamCaomeiBadge
>
implements
IAdamCaomeiBadgeAdminService
{
@Autowired
private
RedisDataSourceUtil
redisDataSourceUtil
;
@Override
public
void
delPublishedCaomeiBadges
()
{
redisDataSourceUtil
.
getRedisAdamUtil
().
del
(
AdamRedisConst
.
INFO_CAOMEI_BADGE_PUBLISHED
);
}
@Override
public
boolean
save
(
AdamCaomeiBadge
entity
)
{
boolean
ok
=
super
.
save
(
entity
);
if
(
ok
)
{
delPublishedCaomeiBadges
();
}
return
ok
;
}
@Override
public
boolean
updateById
(
AdamCaomeiBadge
entity
)
{
boolean
ok
=
super
.
updateById
(
entity
);
if
(
ok
)
{
delPublishedCaomeiBadges
();
}
return
ok
;
}
@Override
@Override
public
PageInfo
<
AdamCaomeiBadgeVo
>
listWithClaimedCount
(
AdamCaomeiBadgeSearchParam
param
)
{
public
PageInfo
<
AdamCaomeiBadgeVo
>
listWithClaimedCount
(
AdamCaomeiBadgeSearchParam
param
)
{
LambdaQueryWrapper
<
AdamCaomeiBadge
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
AdamCaomeiBadge
.
class
);
LambdaQueryWrapper
<
AdamCaomeiBadge
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
AdamCaomeiBadge
.
class
);
...
...
liquidnet-bus-do/liquidnet-service-adam-do/src/main/java/com/liquidnet/service/adam/mapper/AdamCaomeiBadgeMapper.java
View file @
060e4490
...
@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Insert;
...
@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Insert;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Select
;
import
org.apache.ibatis.annotations.Select
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
public
interface
AdamCaomeiBadgeMapper
extends
BaseMapper
<
AdamCaomeiBadge
>
{
public
interface
AdamCaomeiBadgeMapper
extends
BaseMapper
<
AdamCaomeiBadge
>
{
...
@@ -60,6 +61,19 @@ public interface AdamCaomeiBadgeMapper extends BaseMapper<AdamCaomeiBadge> {
...
@@ -60,6 +61,19 @@ public interface AdamCaomeiBadgeMapper extends BaseMapper<AdamCaomeiBadge> {
})
})
int
insertPassportBindingBadgesForUser
(
@Param
(
"userId"
)
String
userId
);
int
insertPassportBindingBadgesForUser
(
@Param
(
"userId"
)
String
userId
);
@Insert
({
"<script>"
,
"insert ignore into adam_caomei_user_badge (user_id, badge_id, source, created_at) values "
,
"<foreach collection='badgeIds' item='badgeId' separator=','>"
,
"(#{userId}, #{badgeId}, #{source}, #{createdAt})"
,
"</foreach>"
,
"</script>"
})
int
insertUserBadgesBatch
(
@Param
(
"userId"
)
String
userId
,
@Param
(
"badgeIds"
)
List
<
String
>
badgeIds
,
@Param
(
"source"
)
Integer
source
,
@Param
(
"createdAt"
)
Date
createdAt
);
/**
/**
* 根据身份证号查询用户已支付的演出ID列表
* 根据身份证号查询用户已支付的演出ID列表
*/
*/
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/controller/AdamCaomeiPassportUserController.java
View file @
060e4490
...
@@ -4,6 +4,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
...
@@ -4,6 +4,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import
com.github.xiaoymin.knife4j.annotations.ApiSupport
;
import
com.github.xiaoymin.knife4j.annotations.ApiSupport
;
import
com.liquidnet.service.adam.dto.param.AdamCaomeiPassportNoParam
;
import
com.liquidnet.service.adam.dto.param.AdamCaomeiPassportNoParam
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportHomeVo
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportHomeVo
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportUserClaimedBadgeVo
;
import
com.liquidnet.service.adam.service.IAdamCaomeiPassportUserService
;
import
com.liquidnet.service.adam.service.IAdamCaomeiPassportUserService
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.ResponseDto
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
...
@@ -14,6 +15,7 @@ import org.springframework.validation.annotation.Validated;
...
@@ -14,6 +15,7 @@ import org.springframework.validation.annotation.Validated;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
import
javax.validation.Valid
;
import
java.util.List
;
@ApiSupport
(
order
=
10045
)
@ApiSupport
(
order
=
10045
)
@Api
(
tags
=
"草莓护照(用户端)"
)
@Api
(
tags
=
"草莓护照(用户端)"
)
...
@@ -29,7 +31,7 @@ public class AdamCaomeiPassportUserController {
...
@@ -29,7 +31,7 @@ public class AdamCaomeiPassportUserController {
@ApiOperationSupport
(
order
=
1
)
@ApiOperationSupport
(
order
=
1
)
@ApiOperation
(
"绑定实体护照(内含编号有效性、是否可绑等校验)"
)
@ApiOperation
(
"绑定实体护照(内含编号有效性、是否可绑等校验)"
)
@PostMapping
(
"bind"
)
@PostMapping
(
"bind"
)
public
ResponseDto
<
String
>
bind
(
@Valid
@RequestBody
AdamCaomeiPassportNoParam
param
)
{
public
ResponseDto
<
List
<
AdamCaomeiPassportUserClaimedBadgeVo
>
>
bind
(
@Valid
@RequestBody
AdamCaomeiPassportNoParam
param
)
{
return
adamCaomeiPassportUserService
.
bindPassport
(
param
.
getPassportNo
());
return
adamCaomeiPassportUserService
.
bindPassport
(
param
.
getPassportNo
());
}
}
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/service/AdamRdmService.java
View file @
060e4490
...
@@ -9,10 +9,14 @@ import com.liquidnet.commons.lang.util.IdentityUtils;
...
@@ -9,10 +9,14 @@ import com.liquidnet.commons.lang.util.IdentityUtils;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.commons.lang.util.SensitizeUtil
;
import
com.liquidnet.commons.lang.util.SensitizeUtil
;
import
com.liquidnet.service.adam.constant.AdamRedisConst
;
import
com.liquidnet.service.adam.constant.AdamRedisConst
;
import
com.liquidnet.service.adam.dto.AdamCaomeiPassportUserBadgeDto
;
import
com.liquidnet.service.adam.dto.AdamUserInfoDto
;
import
com.liquidnet.service.adam.dto.AdamUserInfoDto
;
import
com.liquidnet.service.adam.dto.vo.*
;
import
com.liquidnet.service.adam.dto.vo.*
;
import
com.liquidnet.service.adam.entity.AdamCaomeiBadge
;
import
com.liquidnet.service.adam.entity.AdamEnters
;
import
com.liquidnet.service.adam.entity.AdamEnters
;
import
com.liquidnet.service.adam.entity.AdamUserMember
;
import
com.liquidnet.service.adam.entity.AdamUserMember
;
import
com.liquidnet.service.adam.mapper.AdamCaomeiBadgeMapper
;
import
com.liquidnet.service.adam.mapper.AdamCaomeiPassportMapper
;
import
com.liquidnet.service.adam.mapper.AdamEntersMapper
;
import
com.liquidnet.service.adam.mapper.AdamEntersMapper
;
import
com.liquidnet.service.adam.mapper.AdamUserMapper
;
import
com.liquidnet.service.adam.mapper.AdamUserMapper
;
import
com.liquidnet.service.adam.mapper.AdamUserMemberMapper
;
import
com.liquidnet.service.adam.mapper.AdamUserMemberMapper
;
...
@@ -46,6 +50,10 @@ public class AdamRdmService {
...
@@ -46,6 +50,10 @@ public class AdamRdmService {
AdamUserMemberMapper
adamUserMemberMapper
;
AdamUserMemberMapper
adamUserMemberMapper
;
@Autowired
@Autowired
AdamEntersMapper
adamEntersMapper
;
AdamEntersMapper
adamEntersMapper
;
@Autowired
AdamCaomeiBadgeMapper
adamCaomeiBadgeMapper
;
@Autowired
AdamCaomeiPassportMapper
adamCaomeiPassportMapper
;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | Switch config */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | Switch config */
...
@@ -630,6 +638,73 @@ public class AdamRdmService {
...
@@ -630,6 +638,73 @@ public class AdamRdmService {
redisUtil
.
del
(
AdamRedisConst
.
INFO_ADDRESSES
.
concat
(
uid
));
redisUtil
.
del
(
AdamRedisConst
.
INFO_ADDRESSES
.
concat
(
uid
));
}
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | 草莓徽章缓存 */
public
boolean
setPublishedCaomeiBadges
(
List
<
AdamCaomeiBadge
>
badges
)
{
return
redisUtil
.
set
(
AdamRedisConst
.
INFO_CAOMEI_BADGE_PUBLISHED
,
badges
,
300
);
}
/**
* 获取所有已上架的徽章列表
* @return
*/
public
List
<
AdamCaomeiBadge
>
getPublishedCaomeiBadges
()
{
String
rk
=
AdamRedisConst
.
INFO_CAOMEI_BADGE_PUBLISHED
;
List
<
AdamCaomeiBadge
>
badges
=
(
List
<
AdamCaomeiBadge
>)
redisUtil
.
get
(
rk
);
if
(
CollectionUtils
.
isEmpty
(
badges
))
{
badges
=
adamCaomeiBadgeMapper
.
selectList
(
new
QueryWrapper
<
AdamCaomeiBadge
>().
lambda
()
.
eq
(
AdamCaomeiBadge:
:
getDisplayStatus
,
1
)
.
orderByAsc
(
AdamCaomeiBadge:
:
getType
)
.
orderByDesc
(
AdamCaomeiBadge:
:
getSort
)
.
orderByDesc
(
AdamCaomeiBadge:
:
getMid
)
);
if
(!
CollectionUtils
.
isEmpty
(
badges
))
{
setPublishedCaomeiBadges
(
badges
);
}
}
return
badges
;
}
public
void
delPublishedCaomeiBadges
()
{
redisUtil
.
del
(
AdamRedisConst
.
INFO_CAOMEI_BADGE_PUBLISHED
);
}
/**
* 设置用户领取徽章redis
* @param uid
* @param badges
* @return
*/
public
boolean
setUserCaomeiBadgesByUid
(
String
uid
,
List
<
AdamCaomeiPassportUserBadgeDto
>
badges
)
{
return
redisUtil
.
set
(
AdamRedisConst
.
INFO_CAOMEI_BADGE_USER
.
concat
(
uid
),
badges
,
300
);
}
/**
* 获取用户徽章
* @param uid
* @return
*/
public
List
<
AdamCaomeiPassportUserBadgeDto
>
getUserCaomeiBadgesByUid
(
String
uid
)
{
String
rk
=
AdamRedisConst
.
INFO_CAOMEI_BADGE_USER
.
concat
(
uid
);
List
<
AdamCaomeiPassportUserBadgeDto
>
badges
=
(
List
<
AdamCaomeiPassportUserBadgeDto
>)
redisUtil
.
get
(
rk
);
if
(
CollectionUtils
.
isEmpty
(
badges
))
{
badges
=
adamCaomeiPassportMapper
.
selectUserBadgesByUid
(
uid
);
if
(!
CollectionUtils
.
isEmpty
(
badges
))
{
setUserCaomeiBadgesByUid
(
uid
,
badges
);
}
}
return
badges
;
}
/**
* 删除用户徽章redis
* @param uid
*/
public
void
delUserCaomeiBadgesByUid
(
String
uid
)
{
redisUtil
.
del
(
AdamRedisConst
.
INFO_CAOMEI_BADGE_USER
.
concat
(
uid
));
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | List<购买会员黑名单UID> */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | List<购买会员黑名单UID> */
public
boolean
setBlacklistForMember
(
List
<
String
>
uids
)
{
public
boolean
setBlacklistForMember
(
List
<
String
>
uids
)
{
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/service/impl/AdamCaomeiBadgeUserServiceImpl.java
View file @
060e4490
...
@@ -72,6 +72,7 @@ public class AdamCaomeiBadgeUserServiceImpl implements IAdamCaomeiBadgeUserServi
...
@@ -72,6 +72,7 @@ public class AdamCaomeiBadgeUserServiceImpl implements IAdamCaomeiBadgeUserServi
// 发放徽章 (source: 1-绑定护照自动发放/护照徽章认领)
// 发放徽章 (source: 1-绑定护照自动发放/护照徽章认领)
adamCaomeiBadgeMapper
.
insertUserBadge
(
uid
,
badgeId
,
1
);
adamCaomeiBadgeMapper
.
insertUserBadge
(
uid
,
badgeId
,
1
);
adamRdmService
.
delUserCaomeiBadgesByUid
(
uid
);
log
.
info
(
"[claimBadge] 护照纪念徽章认领成功, uid: {}, badgeId: {}"
,
uid
,
badgeId
);
log
.
info
(
"[claimBadge] 护照纪念徽章认领成功, uid: {}, badgeId: {}"
,
uid
,
badgeId
);
return
ResponseDto
.
success
(
badgeId
);
return
ResponseDto
.
success
(
badgeId
);
...
@@ -101,6 +102,7 @@ public class AdamCaomeiBadgeUserServiceImpl implements IAdamCaomeiBadgeUserServi
...
@@ -101,6 +102,7 @@ public class AdamCaomeiBadgeUserServiceImpl implements IAdamCaomeiBadgeUserServi
// for (AdamCaomeiBadge perfBadge : performanceBadges) {
// for (AdamCaomeiBadge perfBadge : performanceBadges) {
// 发放徽章 (source: 2-购票自动发放/演出徽章认领)
// 发放徽章 (source: 2-购票自动发放/演出徽章认领)
adamCaomeiBadgeMapper
.
insertUserBadge
(
uid
,
badgeId
,
2
);
adamCaomeiBadgeMapper
.
insertUserBadge
(
uid
,
badgeId
,
2
);
adamRdmService
.
delUserCaomeiBadgesByUid
(
uid
);
// }
// }
log
.
info
(
"[claimBadge] 演出纪念徽章认领成功, uid: {}, badgeId: {}, 发放数量: {}"
,
uid
,
badgeId
,
1
);
log
.
info
(
"[claimBadge] 演出纪念徽章认领成功, uid: {}, badgeId: {}, 发放数量: {}"
,
uid
,
badgeId
,
1
);
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/service/impl/AdamCaomeiPassportUserServiceImpl.java
View file @
060e4490
...
@@ -40,7 +40,7 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
...
@@ -40,7 +40,7 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ResponseDto
<
String
>
bindPassport
(
String
passportNo
)
{
public
ResponseDto
<
List
<
AdamCaomeiPassportUserClaimedBadgeVo
>
>
bindPassport
(
String
passportNo
)
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
String
uid
=
CurrentUtil
.
getCurrentUid
();
// 1. 先校验护照信息是否满足绑定条件
// 1. 先校验护照信息是否满足绑定条件
...
@@ -78,13 +78,41 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
...
@@ -78,13 +78,41 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
int
updatedRows
=
adamCaomeiPassportMapper
.
bindPassportAtomic
(
passportNo
.
trim
(),
uid
);
int
updatedRows
=
adamCaomeiPassportMapper
.
bindPassportAtomic
(
passportNo
.
trim
(),
uid
);
if
(
updatedRows
>
0
)
{
if
(
updatedRows
>
0
)
{
// 4. 绑定成功后,自动发放已上架的“护照纪念徽章”(type=1)
// 4. 优先复用已上架徽章缓存,再筛选护照纪念徽章(type=1),用于批量发放和返回给前端弹窗
adamCaomeiBadgeMapper
.
insertPassportBindingBadgesForUser
(
uid
);
List
<
AdamCaomeiBadge
>
publishedBadges
=
adamRdmService
.
getPublishedCaomeiBadges
();
if
(
publishedBadges
==
null
)
{
publishedBadges
=
new
ArrayList
<>();
}
List
<
AdamCaomeiBadge
>
passportTypeBadges
=
publishedBadges
.
stream
()
.
filter
(
b
->
b
.
getType
()
!=
null
&&
b
.
getType
()
==
1
)
.
collect
(
Collectors
.
toList
());
List
<
String
>
badgeIds
=
passportTypeBadges
.
stream
()
.
map
(
AdamCaomeiBadge:
:
getBadgeId
)
.
filter
(
StringUtils:
:
isNotBlank
)
.
collect
(
Collectors
.
toList
());
Date
grantAt
=
new
Date
();
if
(!
badgeIds
.
isEmpty
())
{
adamCaomeiBadgeMapper
.
insertUserBadgesBatch
(
uid
,
badgeIds
,
1
,
grantAt
);
}
// 清理用户徽章缓存,下次读取首页时回源并重建
adamRdmService
.
delUserCaomeiBadgesByUid
(
uid
);
// 5. 返回本次绑定场景下的护照类型徽章列表(用于前端弹窗)
List
<
AdamCaomeiPassportUserClaimedBadgeVo
>
grantedBadges
=
passportTypeBadges
.
stream
().
map
(
b
->
{
AdamCaomeiPassportUserClaimedBadgeVo
v
=
new
AdamCaomeiPassportUserClaimedBadgeVo
();
v
.
setBadgeId
(
b
.
getBadgeId
());
v
.
setName
(
StringUtils
.
defaultString
(
b
.
getName
()));
v
.
setIcon
(
StringUtils
.
defaultString
(
b
.
getIcon
()));
v
.
setType
(
b
.
getType
());
v
.
setClaimedAt
(
grantAt
);
v
.
setSource
(
1
);
return
v
;
}).
collect
(
Collectors
.
toList
());
log
.
info
(
"[bindPassport] 护照绑定成功, uid: {}, passportSn: {}"
,
uid
,
passportNo
);
log
.
info
(
"[bindPassport] 护照绑定成功, uid: {}, passportSn: {}"
,
uid
,
passportNo
);
return
ResponseDto
.
success
(
passportNo
);
return
ResponseDto
.
success
(
grantedBadges
);
}
}
//
5
. 如果原子性修改未成功,说明在并发情况下被别人抢先绑定了
//
6
. 如果原子性修改未成功,说明在并发情况下被别人抢先绑定了
log
.
error
(
"[bindPassport] 并发绑定失败,护照已被抢占, passportSn: {}"
,
passportNo
);
log
.
error
(
"[bindPassport] 并发绑定失败,护照已被抢占, passportSn: {}"
,
passportNo
);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10602"
));
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10602"
));
}
}
...
@@ -139,7 +167,10 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
...
@@ -139,7 +167,10 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
log
.
info
(
"[getPassportHome] 用户已支付的演出订单数量, uid: {}, 数量: {}"
,
uid
,
paidPerformanceIds
.
size
());
log
.
info
(
"[getPassportHome] 用户已支付的演出订单数量, uid: {}, 数量: {}"
,
uid
,
paidPerformanceIds
.
size
());
// 6. 查询用户已认领的所有徽章记录 (用于展示徽章墙)
// 6. 查询用户已认领的所有徽章记录 (用于展示徽章墙)
List
<
AdamCaomeiPassportUserBadgeDto
>
rows
=
adamCaomeiPassportMapper
.
selectUserBadgesByUid
(
uid
);
List
<
AdamCaomeiPassportUserBadgeDto
>
rows
=
adamRdmService
.
getUserCaomeiBadgesByUid
(
uid
);
if
(
rows
==
null
)
{
rows
=
new
ArrayList
<>();
}
List
<
AdamCaomeiPassportUserClaimedBadgeVo
>
claimed
=
rows
.
stream
().
map
(
r
->
{
List
<
AdamCaomeiPassportUserClaimedBadgeVo
>
claimed
=
rows
.
stream
().
map
(
r
->
{
AdamCaomeiPassportUserClaimedBadgeVo
v
=
new
AdamCaomeiPassportUserClaimedBadgeVo
();
AdamCaomeiPassportUserClaimedBadgeVo
v
=
new
AdamCaomeiPassportUserClaimedBadgeVo
();
v
.
setBadgeId
(
r
.
getBadgeId
());
v
.
setBadgeId
(
r
.
getBadgeId
());
...
@@ -159,13 +190,10 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
...
@@ -159,13 +190,10 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
.
collect
(
Collectors
.
toMap
(
AdamCaomeiPassportUserBadgeDto:
:
getBadgeId
,
Function
.
identity
(),
(
a
,
b
)
->
a
));
.
collect
(
Collectors
.
toMap
(
AdamCaomeiPassportUserBadgeDto:
:
getBadgeId
,
Function
.
identity
(),
(
a
,
b
)
->
a
));
// 7. 查询所有已上架的徽章配置,并按类型升序、排序值降序、ID降序排序
// 7. 查询所有已上架的徽章配置,并按类型升序、排序值降序、ID降序排序
List
<
AdamCaomeiBadge
>
published
=
adamCaomeiBadgeMapper
.
selectList
(
List
<
AdamCaomeiBadge
>
published
=
adamRdmService
.
getPublishedCaomeiBadges
();
Wrappers
.
lambdaQuery
(
AdamCaomeiBadge
.
class
)
if
(
published
==
null
)
{
.
eq
(
AdamCaomeiBadge:
:
getDisplayStatus
,
1
)
published
=
new
ArrayList
<>();
.
orderByAsc
(
AdamCaomeiBadge:
:
getType
)
}
.
orderByDesc
(
AdamCaomeiBadge:
:
getSort
)
.
orderByDesc
(
AdamCaomeiBadge:
:
getMid
)
);
log
.
info
(
"[getPassportHome] 系统已上架的徽章数量, uid: {}, 数量: {}"
,
uid
,
published
.
size
());
log
.
info
(
"[getPassportHome] 系统已上架的徽章数量, uid: {}, 数量: {}"
,
uid
,
published
.
size
());
// 8. 组装全部上架徽章列表 (扁平结构,前端按 type 筛选展示)
// 8. 组装全部上架徽章列表 (扁平结构,前端按 type 筛选展示)
...
...
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