Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
向汉
/
uc-engine
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit
f916b030
...
f916b030f805fdb406d9071fb08b291e4e022763
authored
2022-06-19 19:10:50 +0800
by
xianghan
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1.优化sql
2.添加缓存
1 parent
31b1400d
Show whitespace changes
Inline
Side-by-side
Showing
52 changed files
with
1156 additions
and
757 deletions
member-service-impl/src/main/java/com/topdraw/business/module/member/profile/rest/MemberProfileController.java
member-service-impl/src/main/java/com/topdraw/business/module/member/profile/service/impl/MemberProfileServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/module/member/repository/MemberRepository.java
member-service-impl/src/main/java/com/topdraw/business/module/member/rest/MemberController.java
member-service-impl/src/main/java/com/topdraw/business/module/member/service/MemberService.java
member-service-impl/src/main/java/com/topdraw/business/module/member/service/impl/MemberServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/domian/constant/RightType.java → member-service-impl/src/main/java/com/topdraw/business/module/rights/constant/RightType.java
member-service-impl/src/main/java/com/topdraw/business/module/rights/constant/RightsType.java
member-service-impl/src/main/java/com/topdraw/business/module/rights/domain/Rights.java
member-service-impl/src/main/java/com/topdraw/business/module/rights/service/dto/RightsDTO.java
member-service-impl/src/main/java/com/topdraw/business/module/task/progress/repository/TrTaskProgressRepository.java
member-service-impl/src/main/java/com/topdraw/business/module/task/progress/service/TrTaskProgressService.java
member-service-impl/src/main/java/com/topdraw/business/module/task/progress/service/impl/TrTaskProgressServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/module/task/repository/TaskRepository.java
member-service-impl/src/main/java/com/topdraw/business/module/task/service/TaskService.java
member-service-impl/src/main/java/com/topdraw/business/module/task/service/impl/TaskServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/module/task/template/repository/TaskTemplateRepository.java
member-service-impl/src/main/java/com/topdraw/business/module/task/template/service/TaskTemplateService.java
member-service-impl/src/main/java/com/topdraw/business/module/task/template/service/impl/TaskTemplateServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/module/user/iptv/repository/UserTvRepository.java
member-service-impl/src/main/java/com/topdraw/business/module/user/iptv/service/UserTvService.java
member-service-impl/src/main/java/com/topdraw/business/module/user/iptv/service/impl/UserTvServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/module/user/weixin/repository/UserWeixinRepository.java
member-service-impl/src/main/java/com/topdraw/business/module/user/weixin/service/UserWeixinService.java
member-service-impl/src/main/java/com/topdraw/business/module/user/weixin/service/impl/UserWeixinServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/rest/ExpOperationController.java
member-service-impl/src/main/java/com/topdraw/business/process/rest/MemberOperationController.java
member-service-impl/src/main/java/com/topdraw/business/process/rest/PointsOperationController.java
member-service-impl/src/main/java/com/topdraw/business/process/rest/TaskOperationController.java
member-service-impl/src/main/java/com/topdraw/business/process/rest/TaskTemplateOperationController.java
member-service-impl/src/main/java/com/topdraw/business/process/rest/UserOperationController.java
member-service-impl/src/main/java/com/topdraw/business/process/service/PointsOperationService.java
member-service-impl/src/main/java/com/topdraw/business/process/service/RightsOperationService.java
member-service-impl/src/main/java/com/topdraw/business/process/service/TaskOperationService.java
member-service-impl/src/main/java/com/topdraw/business/process/service/TaskTemplateOperationService.java
member-service-impl/src/main/java/com/topdraw/business/process/service/UserOperationService.java
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/CouponOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/ExpOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/PointsOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/RightsOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/TaskOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/TaskTemplateOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/UserOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/member/MemberOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/member/MemberProfileOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/service/member/MemberOperationService.java
member-service-impl/src/main/java/com/topdraw/config/LocalConstants.java
member-service-impl/src/main/java/com/topdraw/config/ServiceEnvConfig.java
member-service-impl/src/main/java/com/topdraw/mq/module/mq/DataSyncMsg.java
member-service-impl/src/main/java/com/topdraw/mq/producer/MessageProducer.java
member-service-impl/src/main/resources/config/application-dev.yml
member-service-impl/src/test/java/com/topdraw/test/business/process/rest/TaskOperationControllerTest.java
member-service-impl/src/main/java/com/topdraw/business/module/member/profile/rest/MemberProfileController.java
View file @
f916b03
...
...
@@ -32,10 +32,8 @@ public class MemberProfileController {
@RequestMapping
(
value
=
"/update"
)
@ApiOperation
(
"修改会员属性"
)
@AnonymousAccess
@Deprecated
public
ResultInfo
update
(
@Validated
(
value
=
{
UpdateGroup
.
class
})
@RequestBody
MemberProfile
resources
)
{
log
.
info
(
"memberProfile ==>> update ==>> resources ===>> [{}]"
,
resources
);
log
.
info
(
"memberProfile ==>> update ==>> resources ===>> {}"
,
resources
);
MemberProfileDTO
memberProfileDTO
=
this
.
memberProfileOperationService
.
updateMemberProfileAndMember
(
resources
);
return
ResultInfo
.
success
(
memberProfileDTO
);
}
...
...
@@ -44,8 +42,7 @@ public class MemberProfileController {
@ApiOperation
(
"修改会员属性并同步会员信息"
)
@AnonymousAccess
public
ResultInfo
updateMemberProfileAndMember
(
@Validated
@RequestBody
MemberProfile
resources
)
{
log
.
info
(
"MemberProfileServiceImpl ==>> update ==>> resources ===>> [{}]"
,
resources
);
log
.
info
(
"MemberProfileServiceImpl ==>> update ==>> resources ===>> {}"
,
resources
);
MemberProfileDTO
memberProfileDTO
=
this
.
memberProfileOperationService
.
updateMemberProfileAndMember
(
resources
);
return
ResultInfo
.
success
(
memberProfileDTO
);
}
...
...
@@ -55,9 +52,7 @@ public class MemberProfileController {
@AnonymousAccess
@Deprecated
public
ResultInfo
create
(
@Validated
(
value
=
{
CreateGroup
.
class
})
@RequestBody
MemberProfile
resources
)
{
log
.
info
(
"memberProfile ==>> update ==>> resources ===>> [{}]"
,
resources
);
log
.
info
(
"memberProfile ==>> update ==>> resources ===>> {}"
,
resources
);
MemberProfileDTO
memberProfileDTO
=
this
.
memberProfileOperationService
.
createMemberProfileAndSyncMember
(
resources
);
return
ResultInfo
.
success
(
memberProfileDTO
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/profile/service/impl/MemberProfileServiceImpl.java
View file @
f916b03
...
...
@@ -175,27 +175,26 @@ public class MemberProfileServiceImpl implements MemberProfileService {
return
memberProfileDTO
;
}
private
void
synchronizedMemberData
(
MemberProfile
resources
,
MemberDTO
memberDTO
)
{
private
void
synchronizedMemberData
(
MemberProfile
memberProfile
,
MemberDTO
memberDTO
)
{
log
.
info
(
"updateMemberProfileAndMember ==>> resources ==>> [{}]"
,
resources
);
log
.
info
(
"updateMemberProfileAndMember ==>> resources ==>> [{}]"
,
memberProfile
);
memberDTO
.
setId
(
resources
.
getMemberId
());
if
(
StringUtils
.
isNotBlank
(
resources
.
getRealname
()))
{
memberDTO
.
setNickname
(
resources
.
getRealname
());
Member
member
=
new
Member
();
member
.
setId
(
memberDTO
.
getId
());
member
.
setCode
(
memberDTO
.
getCode
());
if
(
StringUtils
.
isNotBlank
(
memberProfile
.
getRealname
()))
{
member
.
setNickname
(
memberProfile
.
getRealname
());
}
if
(
Objects
.
nonNull
(
resources
.
getGender
())
&&
resources
.
getGender
()
!=
-
1
)
{
member
DTO
.
setGender
(
resources
.
getGender
());
if
(
Objects
.
nonNull
(
memberProfile
.
getGender
())
&&
memberProfile
.
getGender
()
!=
-
1
)
{
member
.
setGender
(
memberProfile
.
getGender
());
}
if
(
StringUtils
.
isNotBlank
(
resources
.
getBirthday
()))
{
member
DTO
.
setBirthday
(
resources
.
getBirthday
());
if
(
StringUtils
.
isNotBlank
(
memberProfile
.
getBirthday
()))
{
member
.
setBirthday
(
memberProfile
.
getBirthday
());
}
if
(
StringUtils
.
isNotBlank
(
resources
.
getAvatarUrl
()))
{
member
DTO
.
setAvatarUrl
(
resources
.
getAvatarUrl
());
if
(
StringUtils
.
isNotBlank
(
memberProfile
.
getAvatarUrl
()))
{
member
.
setAvatarUrl
(
memberProfile
.
getAvatarUrl
());
}
Member
member
=
new
Member
();
BeanUtils
.
copyProperties
(
memberDTO
,
member
);
this
.
memberService
.
update
(
member
);
this
.
memberService
.
doUpdateMemberAvatarUrlAndNicknameAndGender
(
member
);
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/repository/MemberRepository.java
View file @
f916b03
...
...
@@ -23,24 +23,48 @@ public interface MemberRepository extends JpaRepository<Member, Long>, JpaSpecif
Optional
<
Member
>
findByIdOrCode
(
Long
id
,
String
code
);
@Modifying
@Query
(
value
=
"UPDATE `uc_member` SET `user_iptv_id` = ?2, `update_time` = ?3 , `bind_iptv_platform_type`= 0, "
+
"`bind_iptv_time`=?3 WHERE `id` = ?1"
,
nativeQuery
=
true
)
void
updateUserIptvIdById
(
Long
id
,
Long
userIptvId
,
LocalDateTime
now
);
@Modifying
@Query
(
value
=
"UPDATE `uc_member` SET `exp` = :#{#resources.exp}, `level` = :#{#resources.level} , `update_time`= now() "
+
@Query
(
value
=
"UPDATE `uc_member` SET `exp` = :#{#resources.exp}, "
+
"`level` = :#{#resources.level} , `update_time`= now() "
+
" WHERE `id` = :#{#resources.id}"
,
nativeQuery
=
true
)
void
updateExpAndLevel
(
@Param
(
"resources"
)
Member
member
);
Integer
updateExpAndLevel
(
@Param
(
"resources"
)
Member
member
);
@Modifying
@Query
(
value
=
"UPDATE `uc_member` SET `points` = :#{#resources.points}, `due_points` = :#{#resources.duePoints} , `update_time`= now() "
+
@Query
(
value
=
"UPDATE `uc_member` SET `points` = :#{#resources.points}, "
+
"`due_points` = :#{#resources.duePoints} , `update_time`= now() "
+
" WHERE `id` = :#{#resources.id}"
,
nativeQuery
=
true
)
void
updatePointAndDuePoint
(
@Param
(
"resources"
)
Member
resources
);
Integer
updatePointAndDuePoint
(
@Param
(
"resources"
)
Member
resources
);
@Modifying
@Query
(
value
=
"UPDATE `uc_member` SET `coupon_amount` = :#{#resources.couponAmount}, "
+
"`due_coupon_amount` = :#{#resources.dueCouponAmount} , `update_time`= now() "
+
" WHERE `id` = :#{#resources.id}"
,
nativeQuery
=
true
)
Integer
doUpdateMemberCoupon
(
@Param
(
"resources"
)
Member
member
);
@Query
(
value
=
"SELECT um.* FROM uc_member um LEFT JOIN uc_user_tv tv ON um.id = tv.member_id "
+
" WHERE tv.platform_account = ?1 "
,
nativeQuery
=
true
)
Optional
<
Member
>
findByPlatformAccount
(
String
platformAccount
);
@Modifying
@Query
(
value
=
"UPDATE `uc_member` SET `coupon_amount` = :#{#resources.couponAmount}, `due_coupon_amount` = :#{#resources.dueCouponAmount} , `update_time`= now() "
+
@Query
(
value
=
"UPDATE `uc_member` SET `vip` = :#{#resources.vip}, "
+
"`vip_expire_time` = :#{#resources.vipExpireTime} , `update_time`= now() "
+
" WHERE `id` = :#{#resources.id}"
,
nativeQuery
=
true
)
void
doUpdateMemberCoupon
(
@Param
(
"resources"
)
Member
member
);
Integer
updateMemberVipAndVipExpireTime
(
@Param
(
"resources"
)
Member
member
);
@Modifying
@Query
(
value
=
"UPDATE `uc_member` SET `user_iptv_id` = :#{#resources.userIptvId}, `update_time` = now() , "
+
" `bind_iptv_platform_type`= :#{#resources.bindIptvPlatformType}, "
+
" `bind_iptv_time`=:#{#resources.bindIptvTime} WHERE `id` = :#{#resources.id}"
,
nativeQuery
=
true
)
Integer
updateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime
(
@Param
(
"resources"
)
Member
member
);
@Modifying
@Query
(
value
=
"UPDATE `uc_member` SET `avatar_url` = :#{#resources.avatarUrl}, `update_time` = now() , "
+
" `nickname`= :#{#resources.nickname}, "
+
" `gender`=:#{#resources.gender} WHERE `id` = :#{#resources.id}"
,
nativeQuery
=
true
)
Integer
updateMemberAvatarUrlAndNicknameAndGender
(
@Param
(
"resources"
)
Member
resource
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/rest/MemberController.java
View file @
f916b03
...
...
@@ -52,8 +52,8 @@ public class MemberController {
@AnonymousAccess
@ApiOperation
(
"手动修改vip"
)
public
ResultInfo
doUpdateVipByCode
(
@Validated
(
value
=
{
UpdateGroup
.
class
})
@RequestBody
Member
resources
)
{
log
.
info
(
"member ==>> doUpdateVipByCode ==>> param ==>>
[{}]
"
,
resources
);
this
.
memberOperationService
.
updateMemberVip
(
resources
);
log
.
info
(
"member ==>> doUpdateVipByCode ==>> param ==>>
{}
"
,
resources
);
this
.
memberOperationService
.
doUpdateMemberVipAndVipExpireTime
(
resources
);
return
ResultInfo
.
success
();
}
...
...
@@ -67,7 +67,6 @@ public class MemberController {
if
(
StringUtils
.
isNotBlank
(
code
))
{
MemberDTO
memberDTO
=
this
.
memberOperationService
.
findByCode
(
code
);
resources
.
setId
(
memberDTO
.
getId
());
// BeanUtils.copyProperties(resources, memberDTO);
}
MemberDTO
memberDTO
=
this
.
memberOperationService
.
update
(
resources
);
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/service/MemberService.java
View file @
f916b03
...
...
@@ -40,13 +40,6 @@ public interface MemberService {
MemberDTO
create
(
Member
resources
);
/**
* 创建并返回会员
* @param resources 会员
* @return Member
*/
MemberDTO
createAndReturnMember
(
Member
resources
);
/**
* 修改会员
* @param resources
*/
...
...
@@ -91,4 +84,31 @@ public interface MemberService {
* @return
*/
MemberDTO
doUpdateMemberCoupon
(
Member
member
);
/**
*
* @param platformAccount
* @return
*/
MemberDTO
findByPlatformAccount
(
String
platformAccount
);
/**
*
* @param member
* @return
*/
MemberDTO
doUpdateMemberVipAndVipExpireTime
(
Member
member
);
/**
*
* @param member
* @return
*/
MemberDTO
doUpdateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime
(
Member
member
);
/**
*
* @param member
*/
MemberDTO
doUpdateMemberAvatarUrlAndNicknameAndGender
(
Member
member
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/service/impl/MemberServiceImpl.java
View file @
f916b03
...
...
@@ -9,17 +9,14 @@ import com.topdraw.business.module.member.repository.MemberRepository;
import
com.topdraw.business.module.member.service.MemberService
;
import
com.topdraw.business.module.member.service.dto.MemberDTO
;
import
com.topdraw.business.module.member.service.mapper.MemberMapper
;
import
com.topdraw.config.RedisKeyConstants
;
import
com.topdraw.exception.BadRequestException
;
import
com.topdraw.exception.GlobeExceptionMsg
;
import
com.topdraw.utils.RedisUtils
;
import
com.topdraw.utils.ValidationUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.CachePut
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -45,7 +42,6 @@ public class MemberServiceImpl implements MemberService {
@Autowired
private
RedisUtils
redisUtils
;
@Override
public
String
findCodeById
(
Long
id
)
{
MemberDTO
memberDTO
=
this
.
findById
(
id
);
...
...
@@ -56,35 +52,18 @@ public class MemberServiceImpl implements MemberService {
public
MemberDTO
findById
(
Long
id
)
{
Member
member
=
this
.
memberRepository
.
findById
(
id
).
orElseGet
(
Member:
:
new
);
return
this
.
memberMapper
.
toDto
(
member
);
}
@Override
public
MemberDTO
findByCode
(
String
code
)
{
Member
member
=
this
.
memberRepository
.
findFirstByCode
(
code
).
orElseGet
(
Member:
:
new
);
ValidationUtil
.
isNull
(
member
.
getId
(),
"Member"
,
"id"
,
code
);
return
this
.
memberMapper
.
toDto
(
member
);
}
private
MemberDTO
findByIdOrCode
(
Long
id
,
String
code
)
{
Member
member
=
this
.
memberRepository
.
findByIdOrCode
(
id
,
code
).
orElseGet
(
Member:
:
new
);
ValidationUtil
.
isNull
(
member
.
getId
(),
"Member"
,
"param"
,
code
);
return
this
.
memberMapper
.
toDto
(
member
);
}
@Override
public
List
<
MemberDTO
>
findByUserIptvId
(
Long
id
)
{
List
<
Member
>
memberList
=
this
.
memberRepository
.
findByUserIptvId
(
id
);
return
this
.
memberMapper
.
toDto
(
memberList
);
}
@Override
...
...
@@ -94,11 +73,11 @@ public class MemberServiceImpl implements MemberService {
throw
new
BadRequestException
(
GlobeExceptionMsg
.
MEMBER_ID_AND_CODE_ARE_NULL
);
if
(
StringUtils
.
isNotBlank
(
memberCode
))
{
Member
DTO
memberDTO
=
this
.
findByCode
(
memberCode
);
return
memberDTO
;
Member
member
=
this
.
memberRepository
.
findFirstByCode
(
memberCode
).
orElseGet
(
Member:
:
new
);
return
this
.
memberMapper
.
toDto
(
member
)
;
}
else
if
(
Objects
.
nonNull
(
id
))
{
Member
DTO
memberDTO
=
this
.
findById
(
id
);
return
memberDTO
;
Member
member
=
this
.
memberRepository
.
findById
(
id
).
orElseGet
(
Member:
:
new
);
return
this
.
memberMapper
.
toDto
(
member
)
;
}
return
null
;
...
...
@@ -106,102 +85,158 @@ public class MemberServiceImpl implements MemberService {
@Override
public
MemberDTO
checkMember
(
Member
member
)
{
String
memberCode
=
member
.
getCode
();
Long
memberId
=
member
.
getId
();
return
this
.
checkMember
(
memberId
,
memberCode
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
MemberDTO
doUpdateMemberExpAndLevel
(
Member
resource
)
{
Integer
count
=
this
.
memberRepository
.
updateExpAndLevel
(
resource
);
if
(
Objects
.
nonNull
(
count
)
&&
count
>
0
)
{
Member
member
=
this
.
memberRepository
.
findById
(
resource
.
getId
()).
orElseGet
(
Member:
:
new
);
return
this
.
memberMapper
.
toDto
(
member
);
}
return
this
.
memberMapper
.
toDto
(
resource
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
MemberDTO
doUpdateMember
ExpAndLevel
(
Member
resources
)
{
this
.
redisUtils
.
doLock
(
"member::code"
+
resources
.
getCode
()
);
public
MemberDTO
doUpdateMember
Coupon
(
Member
resource
)
{
log
.
info
(
"修改会员优惠券 =>> {}"
,
resource
);
try
{
MemberDTO
memberDTO
=
this
.
findById
(
resources
.
getId
());
if
(
Objects
.
nonNull
(
memberDTO
))
{
this
.
memberRepository
.
updateExpAndLevel
(
resources
);
this
.
redisUtils
.
doLock
(
RedisKeyConstants
.
updateCacheMemberById
+
resource
.
getId
());
Integer
count
=
this
.
memberRepository
.
doUpdateMemberCoupon
(
resource
);
if
(
Objects
.
nonNull
(
count
)
&&
count
>
0
)
{
Member
member
=
this
.
memberRepository
.
findById
(
resource
.
getId
()).
orElseGet
(
Member:
:
new
);
return
this
.
memberMapper
.
toDto
(
member
);
}
return
memberDTO
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
log
.
info
(
"修改会员优惠券,"
+
e
.
getMessage
());
}
finally
{
this
.
redisUtils
.
doUnLock
(
"member::code"
+
resources
.
getCode
());
this
.
redisUtils
.
doUnLock
(
RedisKeyConstants
.
updateCacheMemberById
+
resource
.
getId
());
}
return
this
.
memberMapper
.
toDto
(
resource
);
}
@Override
public
MemberDTO
findByPlatformAccount
(
String
platformAccount
)
{
log
.
info
(
"从数据库中检索大屏账号对应的会员, platformAccount ==>> {}"
,
platformAccount
);
Member
member
=
this
.
memberRepository
.
findByPlatformAccount
(
platformAccount
).
orElseGet
(
Member:
:
new
);
return
this
.
memberMapper
.
toDto
(
member
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
MemberDTO
doUpdateMemberCoupon
(
Member
member
)
{
// MemberDTO memberDTO = this.update(member);
this
.
redisUtils
.
doLock
(
"member::code"
+
member
.
getCode
());
public
MemberDTO
doUpdateMemberVipAndVipExpireTime
(
Member
resource
)
{
log
.
info
(
"修改会员vip和vip过期时间 ==>> {}"
,
resource
);
try
{
MemberDTO
memberDTO
=
this
.
findById
(
member
.
getId
());
if
(
Objects
.
nonNull
(
memberDTO
))
{
this
.
memberRepository
.
doUpdateMemberCoupon
(
member
);
this
.
redisUtils
.
doLock
(
RedisKeyConstants
.
updateCacheMemberById
+
resource
.
getId
());
Integer
count
=
this
.
memberRepository
.
updateMemberVipAndVipExpireTime
(
resource
);
if
(
Objects
.
nonNull
(
count
)
&&
count
>
0
)
{
Member
member
=
this
.
memberRepository
.
findById
(
resource
.
getId
()).
orElseGet
(
Member:
:
new
);
return
this
.
memberMapper
.
toDto
(
member
);
}
return
memberDTO
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
log
.
info
(
"修改会员vip和vip过期时间,"
+
e
.
getMessage
());
}
finally
{
this
.
redisUtils
.
doUnLock
(
"member::code"
+
member
.
getCode
());
this
.
redisUtils
.
doUnLock
(
RedisKeyConstants
.
updateCacheMemberById
+
resource
.
getId
());
}
return
this
.
memberMapper
.
toDto
(
resource
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
MemberDTO
create
(
Member
resources
)
{
public
MemberDTO
doUpdateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime
(
Member
resource
)
{
log
.
info
(
"修改会员绑定大屏信息 ==>> {}"
,
resource
);
try
{
this
.
redisUtils
.
doLock
(
RedisKeyConstants
.
updateCacheMemberById
+
resource
.
getId
());
Member
member
=
MemberBuilder
.
build
(
resources
);
Member
_member
=
this
.
save
(
member
);
Integer
count
=
this
.
memberRepository
.
updateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime
(
resource
);
if
(
Objects
.
nonNull
(
count
)
&&
count
>
0
)
{
Member
member
=
this
.
memberRepository
.
findById
(
resource
.
getId
()).
orElseGet
(
Member:
:
new
);
return
this
.
memberMapper
.
toDto
(
member
);
}
if
(
Objects
.
nonNull
(
_member
.
getId
())
)
{
MemberProfile
memberProfile
=
MemberProfileBuilder
.
build
(
_member
);
// 保存会员属性
this
.
memberProfileService
.
create
(
memberProfile
);
}
catch
(
Exception
e
)
{
log
.
info
(
"修改会员绑定大屏信息,"
+
e
.
getMessage
()
);
}
finally
{
this
.
redisUtils
.
doUnLock
(
RedisKeyConstants
.
updateCacheMemberById
+
resource
.
getId
()
);
}
return
this
.
memberMapper
.
toDto
(
resource
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
MemberDTO
doUpdateMemberAvatarUrlAndNicknameAndGender
(
Member
resource
)
{
log
.
info
(
"修改会员头像、昵称、性别 ==>> {}"
,
resource
);
try
{
this
.
redisUtils
.
doLock
(
RedisKeyConstants
.
updateCacheMemberById
+
resource
.
getId
());
Integer
count
=
this
.
memberRepository
.
updateMemberAvatarUrlAndNicknameAndGender
(
resource
);
if
(
Objects
.
nonNull
(
count
)
&&
count
>
0
)
{
Member
member
=
this
.
memberRepository
.
findById
(
resource
.
getId
()).
orElseGet
(
Member:
:
new
);
return
this
.
memberMapper
.
toDto
(
member
);
}
}
catch
(
Exception
e
)
{
log
.
info
(
"修改会员头像、昵称、性别异常,"
+
e
.
getMessage
());
}
finally
{
this
.
redisUtils
.
doUnLock
(
RedisKeyConstants
.
updateCacheMemberById
+
resource
.
getId
());
}
return
this
.
memberMapper
.
toDto
(
resource
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
MemberDTO
create
AndReturnMember
(
Member
resources
)
{
public
MemberDTO
create
(
Member
resources
)
{
MemberDTO
memberDTO
=
this
.
create
(
MemberBuilder
.
build
(
resources
));
Member
member
=
MemberBuilder
.
build
(
resources
);
Member
_member
=
this
.
save
(
member
);
return
memberDTO
;
if
(
Objects
.
nonNull
(
_member
.
getId
()))
{
MemberProfile
memberProfile
=
MemberProfileBuilder
.
build
(
_member
);
// 保存会员属性
this
.
memberProfileService
.
create
(
memberProfile
);
}
return
this
.
memberMapper
.
toDto
(
member
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
MemberDTO
update
(
Member
resources
)
{
log
.
info
(
"MemberServiceImpl ==>> update ==>> resources ==>> [{}]"
,
resources
);
this
.
redisUtils
.
doLock
(
"member::code"
+
resources
.
getCode
());
log
.
info
(
"修改会员信息 ==>> {}"
,
resources
);
try
{
MemberDTO
memberDTO
=
this
.
checkMember
(
resources
);
this
.
redisUtils
.
doLock
(
RedisKeyConstants
.
updateCacheMemberById
+
resources
.
getId
()
);
MemberDTO
memberDTO
=
this
.
checkMember
(
resources
);
Member
member
=
new
Member
();
BeanUtils
.
copyProperties
(
memberDTO
,
member
);
member
.
copy
(
resources
);
Member
_member
=
this
.
save
(
member
);
return
this
.
memberMapper
.
toDto
(
_member
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
log
.
info
(
e
.
getMessage
());
}
finally
{
this
.
redisUtils
.
doUnLock
(
"member::code"
+
resources
.
getCode
());
this
.
redisUtils
.
doUnLock
(
RedisKeyConstants
.
updateCacheMemberById
+
resources
.
getId
());
}
return
this
.
memberMapper
.
toDto
(
resources
);
}
@Transactional
(
propagation
=
Propagation
.
REQUIRES_NEW
)
...
...
@@ -212,26 +247,14 @@ public class MemberServiceImpl implements MemberService {
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
MemberDTO
doUpdateMemberPoints
(
Member
resources
)
{
try
{
this
.
redisUtils
.
doLock
(
"member::code"
+
resources
.
getCode
());
/*ValidationUtil.isNull(member.getId(), "Member", "id", resources.getId());
member.copy(resources);
Member _member = this.save(member);*/
MemberDTO
memberDTO
=
this
.
findById
(
resources
.
getId
());
if
(
Objects
.
nonNull
(
memberDTO
))
{
this
.
memberRepository
.
updatePointAndDuePoint
(
resources
);
Integer
count
=
this
.
memberRepository
.
updatePointAndDuePoint
(
resources
);
if
(
Objects
.
nonNull
(
count
)
&&
count
>
0
)
{
Member
member
=
this
.
memberRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
Member:
:
new
);
return
this
.
memberMapper
.
toDto
(
member
);
}
return
memberDTO
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
}
finally
{
this
.
redisUtils
.
doUnLock
(
"member::code"
+
resources
.
getCode
());
}
return
this
.
memberMapper
.
toDto
(
resources
);
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/
process/domian
/constant/RightType.java
→
member-service-impl/src/main/java/com/topdraw/business/
module/rights
/constant/RightType.java
View file @
f916b03
package
com
.
topdraw
.
business
.
process
.
domian
.
constant
;
package
com
.
topdraw
.
business
.
module
.
rights
.
constant
;
public
enum
RightType
{
/**积分*/
...
...
member-service-impl/src/main/java/com/topdraw/business/module/rights/constant/RightsType.java
deleted
100644 → 0
View file @
31b1400
package
com
.
topdraw
.
business
.
module
.
rights
.
constant
;
public
class
RightsType
{
public
static
String
TYPE_1
=
"1"
;
Integer
TYPE_2
=
2
;
Integer
TYPE_3
=
3
;
}
member-service-impl/src/main/java/com/topdraw/business/module/rights/domain/Rights.java
View file @
f916b03
...
...
@@ -47,7 +47,7 @@ public class Rights implements Serializable {
/** 权益的实体类型 1:积分;2成长值;3优惠券 */
@Column
(
name
=
"entity_type"
,
nullable
=
false
)
private
String
entityType
;
private
Integer
entityType
;
/** 实体id */
@Column
(
name
=
"entity_id"
,
nullable
=
false
)
...
...
member-service-impl/src/main/java/com/topdraw/business/module/rights/service/dto/RightsDTO.java
View file @
f916b03
...
...
@@ -28,7 +28,7 @@ public class RightsDTO implements Serializable {
private
Integer
type
;
/** 权益的实体类型 1:积分;2成长值;3优惠券 */
private
String
entityType
;
private
Integer
entityType
;
/** 实体id */
private
Long
entityId
;
...
...
member-service-impl/src/main/java/com/topdraw/business/module/task/progress/repository/TrTaskProgressRepository.java
View file @
f916b03
...
...
@@ -16,5 +16,5 @@ public interface TrTaskProgressRepository extends JpaRepository<TrTaskProgress,
@Query
(
value
=
"select id, member_id, task_id , current_action_amount , \n"
+
" target_action_amount , `status` , completion_time,create_time,update_time from uc_tr_task_progress where member_id = ?1 \n"
+
" and task_id = ?2 and Date(completion_time) = ?3 "
,
nativeQuery
=
true
)
List
<
TrTaskProgress
>
findByMemberIdAndTaskIdAndCompletionTime
(
Long
memberId
,
Long
taskId
,
String
time1
);
TrTaskProgress
findByMemberIdAndTaskIdAndCompletionTime
(
Long
memberId
,
Long
taskId
,
String
time1
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/task/progress/service/TrTaskProgressService.java
View file @
f916b03
...
...
@@ -2,6 +2,8 @@ package com.topdraw.business.module.task.progress.service;
import
com.topdraw.business.module.task.progress.domain.TrTaskProgress
;
import
com.topdraw.business.module.task.progress.service.dto.TrTaskProgressDTO
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
...
...
@@ -21,13 +23,13 @@ public interface TrTaskProgressService {
*
* @param resources
*/
void
create
(
TrTaskProgress
resources
);
TrTaskProgress
create
(
TrTaskProgress
resources
,
String
date
);
/**
*
* @param resources
*/
void
update
(
TrTaskProgress
resources
);
TrTaskProgress
update
(
TrTaskProgress
resources
,
String
date
);
/**
*
...
...
@@ -42,5 +44,6 @@ public interface TrTaskProgressService {
* @param time1
* @return
*/
List
<
TrTaskProgressDTO
>
findByMemberIdAndTaskIdAndCompletionTime
(
Long
memberId
,
Long
taskId
,
String
time1
);
TrTaskProgressDTO
findByMemberIdAndTaskIdAndCompletionTime
(
Long
memberId
,
Long
taskId
,
String
time1
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/task/progress/service/impl/TrTaskProgressServiceImpl.java
View file @
f916b03
package
com
.
topdraw
.
business
.
module
.
task
.
progress
.
service
.
impl
;
import
com.topdraw.business.module.task.progress.domain.TrTaskProgress
;
import
com.topdraw.config.RedisKeyConstants
;
import
com.topdraw.utils.ValidationUtil
;
import
com.topdraw.business.module.task.progress.repository.TrTaskProgressRepository
;
import
com.topdraw.business.module.task.progress.service.TrTaskProgressService
;
import
com.topdraw.business.module.task.progress.service.dto.TrTaskProgressDTO
;
import
com.topdraw.business.module.task.progress.service.mapper.TrTaskProgressMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CachePut
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.dao.EmptyResultDataAccessException
;
import
org.springframework.util.Assert
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
...
...
@@ -21,6 +26,7 @@ import java.util.List;
*/
@Service
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
@Slf4j
public
class
TrTaskProgressServiceImpl
implements
TrTaskProgressService
{
@Autowired
...
...
@@ -38,17 +44,21 @@ public class TrTaskProgressServiceImpl implements TrTaskProgressService {
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
create
(
TrTaskProgress
resources
)
{
this
.
trTaskProgressRepository
.
save
(
resources
);
@Cacheable
(
cacheNames
=
RedisKeyConstants
.
cacheTaskProcessByMemberId
,
key
=
"#resources.memberId+':'+#resources.taskId+':'+#date"
,
unless
=
"#result == null "
)
public
TrTaskProgress
create
(
TrTaskProgress
resources
,
String
date
)
{
TrTaskProgress
trTaskProgress
=
this
.
trTaskProgressRepository
.
save
(
resources
);
return
trTaskProgress
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
update
(
TrTaskProgress
resources
)
{
TrTaskProgress
TrTaskProgress
=
this
.
trTaskProgressRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
TrTaskProgress:
:
new
);
ValidationUtil
.
isNull
(
TrTaskProgress
.
getId
(),
"TrTaskProgress"
,
"id"
,
resources
.
getId
());
TrTaskProgress
.
copy
(
resources
);
this
.
trTaskProgressRepository
.
save
(
TrTaskProgress
);
@Cacheable
(
cacheNames
=
RedisKeyConstants
.
cacheTaskProcessByMemberId
,
key
=
"#resources.memberId+':'+#resources.taskId+':'+#date"
,
unless
=
"#result == null "
)
public
TrTaskProgress
update
(
TrTaskProgress
resources
,
String
date
)
{
TrTaskProgress
trTaskProgress
=
this
.
trTaskProgressRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
TrTaskProgress:
:
new
);
ValidationUtil
.
isNull
(
trTaskProgress
.
getId
(),
"TrTaskProgress"
,
"id"
,
resources
.
getId
());
trTaskProgress
.
copy
(
resources
);
TrTaskProgress
save
=
this
.
trTaskProgressRepository
.
save
(
trTaskProgress
);
return
save
;
}
@Override
...
...
@@ -61,9 +71,12 @@ public class TrTaskProgressServiceImpl implements TrTaskProgressService {
}
@Override
public
List
<
TrTaskProgressDTO
>
findByMemberIdAndTaskIdAndCompletionTime
(
Long
memberId
,
Long
taskId
,
String
time1
)
{
@Cacheable
(
cacheNames
=
RedisKeyConstants
.
cacheTaskProcessByMemberId
,
key
=
"#memberId+':'+#taskId+':'+#time1"
,
unless
=
"#result == null"
)
public
TrTaskProgressDTO
findByMemberIdAndTaskIdAndCompletionTime
(
Long
memberId
,
Long
taskId
,
String
time1
)
{
log
.
info
(
"从数据库查询当前会员今天是否完成了此任务, memberId ==>> {} || taskId ==>> {}"
,
memberId
,
taskId
);
return
this
.
trTaskProgressMapper
.
toDto
(
this
.
trTaskProgressRepository
.
findByMemberIdAndTaskIdAndCompletionTime
(
memberId
,
taskId
,
time1
));
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/task/repository/TaskRepository.java
View file @
f916b03
...
...
@@ -21,7 +21,13 @@ public interface TaskRepository extends JpaRepository<Task, Long>, JpaSpecificat
@Modifying
@Transactional
@Query
(
value
=
"UPDATE `tr_task` SET `delete_mark` = 1 , `update_time` = now() WHERE `id` = ?1"
,
nativeQuery
=
true
)
void
updateDeleteMark
(
Long
id
);
Integer
updateDeleteMark
(
Long
id
);
Optional
<
Task
>
findByCode
(
String
code
);
@Query
(
value
=
"SELECT ta.*, attr.attr_str AS attr FROM tr_task ta LEFT JOIN tr_task_template tm ON ta.task_template_id = tm.id "
+
" LEFT JOIN tr_task_attr attr ON attr.task_id = ta.id "
+
" WHERE ta.`status` = 1 AND ta.valid_time <= now() and ta.expire_time >= now() AND ta.delete_mark = 0 AND "
+
" tm.type = ?1 "
,
nativeQuery
=
true
)
List
<
Task
>
findByEvent
(
Integer
event
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/task/service/TaskService.java
View file @
f916b03
package
com
.
topdraw
.
business
.
module
.
task
.
service
;
import
com.topdraw.business.module.task.domain.Task
;
import
com.topdraw.business.module.task.progress.service.dto.TrTaskProgressDTO
;
import
com.topdraw.business.module.task.service.dto.TaskDTO
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
...
...
@@ -47,11 +50,19 @@ public interface TaskService {
*
* @param task
*/
void
delete
(
Task
task
);
Integer
delete
(
Task
task
);
/**
*
* @param id
*/
void
delete
(
Long
id
);
Integer
delete
(
Long
id
);
/**
*
* @param event
* @return
*/
List
<
Task
>
findByEvent
(
Integer
event
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/task/service/impl/TaskServiceImpl.java
View file @
f916b03
...
...
@@ -5,11 +5,15 @@ import com.topdraw.business.module.task.repository.TaskRepository;
import
com.topdraw.business.module.task.service.TaskService
;
import
com.topdraw.business.module.task.service.dto.TaskDTO
;
import
com.topdraw.business.module.task.service.mapper.TaskMapper
;
import
com.topdraw.config.RedisKeyConstants
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
...
...
@@ -19,6 +23,7 @@ import java.util.Objects;
*/
@Service
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
@Slf4j
public
class
TaskServiceImpl
implements
TaskService
{
@Autowired
...
...
@@ -56,14 +61,20 @@ public class TaskServiceImpl implements TaskService {
}
@Override
public
void
delete
(
Task
task
)
{
public
Integer
delete
(
Task
task
)
{
Long
id
=
task
.
getId
();
this
.
delete
(
id
);
return
this
.
delete
(
id
);
}
@Override
public
void
delete
(
Long
id
)
{
this
.
taskRepository
.
updateDeleteMark
(
id
);
public
Integer
delete
(
Long
id
)
{
return
this
.
taskRepository
.
updateDeleteMark
(
id
);
}
@Override
// @Cacheable(value = RedisKeyConstants.cacheTaskByTaskTemplateId, key = "#event" , unless = "#result.size() == 0")
public
List
<
Task
>
findByEvent
(
Integer
event
)
{
log
.
info
(
"从数据库查询事件列表 ==>> {}"
,
event
);
return
Objects
.
nonNull
(
event
)
?
this
.
taskRepository
.
findByEvent
(
event
)
:
new
ArrayList
<>();
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/task/template/repository/TaskTemplateRepository.java
View file @
f916b03
...
...
@@ -26,4 +26,6 @@ public interface TaskTemplateRepository extends JpaRepository<TaskTemplate, Long
@Transactional
@Query
(
value
=
"UPDATE `tr_task_template` SET `delete_mark` = 1 , `update_time` = now() WHERE `id` = ?1"
,
nativeQuery
=
true
)
void
updateDeleteMark
(
Long
id
);
Long
countByCodeAndType
(
String
code
,
Integer
type
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/task/template/service/TaskTemplateService.java
View file @
f916b03
...
...
@@ -61,4 +61,11 @@ public interface TaskTemplateService {
* @return
*/
TaskTemplateDTO
findByType
(
Integer
event
);
/**
*
* @param taskTemplate
* @return
*/
Long
countByCodeAndType
(
TaskTemplate
taskTemplate
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/task/template/service/impl/TaskTemplateServiceImpl.java
View file @
f916b03
...
...
@@ -83,4 +83,10 @@ public class TaskTemplateServiceImpl implements TaskTemplateService {
return
Objects
.
nonNull
(
event
)
?
this
.
taskTemplateMapper
.
toDto
(
this
.
taskTemplateRepository
.
findByType
(
event
).
orElseGet
(
TaskTemplate:
:
new
))
:
new
TaskTemplateDTO
();
}
@Override
public
Long
countByCodeAndType
(
TaskTemplate
taskTemplate
)
{
Long
count
=
this
.
taskTemplateRepository
.
countByCodeAndType
(
taskTemplate
.
getCode
(),
taskTemplate
.
getType
());
return
count
;
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/user/iptv/repository/UserTvRepository.java
View file @
f916b03
...
...
@@ -5,6 +5,8 @@ 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.data.repository.query.Param
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.time.LocalDateTime
;
import
java.util.Optional
;
...
...
@@ -24,4 +26,9 @@ public interface UserTvRepository extends JpaRepository<UserTv, Long>, JpaSpecif
@Modifying
@Query
(
value
=
"UPDATE `uc_user_tv` SET `vis_user_id` = ?2, `update_time` = ?3 WHERE `id` = ?1"
,
nativeQuery
=
true
)
Integer
updateUserTvVisUserId
(
Long
id
,
Long
visUserId
,
LocalDateTime
now
);
@Modifying
@Query
(
value
=
"UPDATE `uc_user_tv` SET `priority_member_code` = :#{#resources.priorityMemberCode}, `update_time` = now()"
+
" WHERE `id` = :#{#resources.id}"
,
nativeQuery
=
true
)
Integer
updatePriorityMemberCode
(
@Param
(
"resources"
)
UserTv
resources
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/user/iptv/service/UserTvService.java
View file @
f916b03
...
...
@@ -69,7 +69,7 @@ public interface UserTvService {
* @param memberCode
* @return
*/
boolean
checkPriorityMemberByMemberIdOrMemberCode
(
Long
memberId
,
String
memberCode
);
boolean
checkPriorityMemberByMemberIdOrMemberCode
(
Long
memberId
,
String
memberCode
);
/**
*
...
...
@@ -84,4 +84,11 @@ public interface UserTvService {
* @return
*/
UserTvDTO
updateUserTvVisUserId
(
UserTv
resources
);
/**
*
* @param resources
* @return
*/
UserTvDTO
doUpdatePriorityMemberCode
(
UserTv
resources
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/user/iptv/service/impl/UserTvServiceImpl.java
View file @
f916b03
...
...
@@ -5,6 +5,7 @@ import com.topdraw.business.module.member.service.MemberService;
import
com.topdraw.business.module.member.service.dto.MemberDTO
;
import
com.topdraw.business.module.user.iptv.domain.UserTv
;
import
com.topdraw.business.process.service.impl.UserOperationServiceImpl
;
import
com.topdraw.config.RedisKeyConstants
;
import
com.topdraw.exception.EntityNotFoundException
;
import
com.topdraw.exception.GlobeExceptionMsg
;
import
com.topdraw.utils.ValidationUtil
;
...
...
@@ -16,6 +17,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.aop.framework.AopContext
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -96,6 +98,16 @@ public class UserTvServiceImpl implements UserTvService {
return
null
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
UserTvDTO
doUpdatePriorityMemberCode
(
UserTv
resources
)
{
Integer
count
=
this
.
userTvRepository
.
updatePriorityMemberCode
(
resources
);
if
(
Objects
.
nonNull
(
count
)
&&
count
>
0
)
{
UserTv
userTv
=
this
.
userTvRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
UserTv:
:
new
);
return
this
.
userTvMapper
.
toDto
(
userTv
);
}
return
this
.
userTvMapper
.
toDto
(
resources
);
}
private
MemberDTO
findMemberByMemberCode
(
String
memberCode
)
{
...
...
@@ -157,7 +169,9 @@ public class UserTvServiceImpl implements UserTvService {
}
@Override
@Cacheable
(
cacheNames
=
RedisKeyConstants
.
cacheUserTvByPlatformAccount
,
key
=
"#platformAccount"
)
public
UserTvDTO
findByPlatformAccount
(
String
platformAccount
)
{
log
.
info
(
"从数据库通过大屏账号检索大屏账号信息"
);
Optional
<
UserTv
>
userTv
=
this
.
userTvRepository
.
findByPlatformAccount
(
platformAccount
);
if
(
userTv
.
isPresent
())
{
ValidationUtil
.
isNull
(
userTv
.
get
().
getId
(),
"UserTv"
,
"id"
,
userTv
.
get
().
getId
());
...
...
member-service-impl/src/main/java/com/topdraw/business/module/user/weixin/repository/UserWeixinRepository.java
View file @
f916b03
...
...
@@ -29,9 +29,7 @@ public interface UserWeixinRepository extends JpaRepository<UserWeixin, Long>, J
Optional
<
UserWeixin
>
findFirstByMemberId
(
Long
memberId
);
@Modifying
@Transactional
@Query
(
value
=
"update `uc_user_weixin` set update_time = :#{#resources.updateTime} "
+
"where appid = :#{#resources.appid} and openid = :#{#resources.openid}"
,
nativeQuery
=
true
)
void
updateTime
(
@Param
(
"resources"
)
UserWeixin
resources
);
@Query
(
value
=
"UPDATE `uc_user_weixin` SET update_time = now(), `status` = :#{#resources.status}"
+
" WHERE `id` = :#{#resources.id}"
,
nativeQuery
=
true
)
Integer
updateWeixinStatus
(
@Param
(
"resources"
)
UserWeixin
resource
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/user/weixin/service/UserWeixinService.java
View file @
f916b03
...
...
@@ -31,12 +31,6 @@ public interface UserWeixinService {
/**
*
* @param resources
*/
void
updateTime
(
UserWeixin
resources
);
/**
*
* @param id
*/
void
delete
(
Long
id
);
...
...
@@ -87,4 +81,11 @@ public interface UserWeixinService {
* @return
*/
UserWeixinDTO
findFirstByMemberId
(
Long
memberId
);
/**
*
* @param userWeixin
* @return
*/
UserWeixinDTO
doUpdateWeixinStatus
(
UserWeixin
userWeixin
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/user/weixin/service/impl/UserWeixinServiceImpl.java
View file @
f916b03
...
...
@@ -14,6 +14,8 @@ import org.springframework.transaction.annotation.Transactional;
import
org.springframework.dao.EmptyResultDataAccessException
;
import
org.springframework.util.Assert
;
import
java.util.Objects
;
/**
* @author XiangHan
* @date 2021-12-16
...
...
@@ -54,11 +56,6 @@ public class UserWeixinServiceImpl implements UserWeixinService {
}
@Override
public
void
updateTime
(
UserWeixin
resources
)
{
this
.
userWeixinRepository
.
updateTime
(
resources
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
delete
(
Long
id
)
{
Assert
.
notNull
(
id
,
"The given id must not be null!"
);
...
...
@@ -104,4 +101,15 @@ public class UserWeixinServiceImpl implements UserWeixinService {
return
this
.
userWeixinMapper
.
toDto
(
userWeixin
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
UserWeixinDTO
doUpdateWeixinStatus
(
UserWeixin
resource
)
{
Integer
count
=
this
.
userWeixinRepository
.
updateWeixinStatus
(
resource
);
if
(
Objects
.
nonNull
(
count
)
&&
count
>
0
)
{
UserWeixin
userWeixin
=
this
.
userWeixinRepository
.
findById
(
resource
.
getId
()).
orElseGet
(
UserWeixin:
:
new
);
return
this
.
userWeixinMapper
.
toDto
(
userWeixin
);
}
return
this
.
userWeixinMapper
.
toDto
(
resource
);
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/process/rest/ExpOperationController.java
View file @
f916b03
...
...
@@ -5,6 +5,7 @@ import com.topdraw.business.process.service.ExpOperationService;
import
com.topdraw.common.ResultInfo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
...
...
@@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Objects
;
/**
* @author XiangHan
...
...
@@ -22,14 +24,27 @@ import java.util.List;
@Api
(
tags
=
"成长值管理"
)
@RestController
@RequestMapping
(
"/uce/expOperation"
)
@Slf4j
public
class
ExpOperationController
{
@Autowired
private
ExpOperationService
expOperationService
;
@PostMapping
(
value
=
"/
grantExpByManual
"
)
@PostMapping
(
value
=
"/
addExp
"
)
@ApiOperation
(
"手动发放成长值"
)
public
ResultInfo
grantExpByManual
(
@Validated
@RequestBody
TempExp
tempExp
)
{
log
.
info
(
"手动发放成长值,参数 ==>> {}"
,
tempExp
);
Long
memberId
=
tempExp
.
getMemberId
();
if
(
Objects
.
isNull
(
memberId
))
{
log
.
error
(
"发放成长值失败,参数错误,无会员id"
);
return
ResultInfo
.
failure
(
"发放成长值失败,参数错误,无会员id"
);
}
Long
rewardExp
=
tempExp
.
getRewardExp
();
if
(
Objects
.
isNull
(
rewardExp
)
||
rewardExp
<=
0L
)
{
log
.
error
(
"发放成长值失败,参数错误,成长值为空或者小于0 ==>> {}"
,
rewardExp
);
return
ResultInfo
.
failure
(
"发放成长值失败,参数错误,成长值为空或者小于0"
);
}
List
<
TempExp
>
tempExpList
=
Arrays
.
asList
(
tempExp
);
this
.
expOperationService
.
grantExpByManual
(
tempExpList
);
return
ResultInfo
.
success
();
...
...
member-service-impl/src/main/java/com/topdraw/business/process/rest/MemberOperationController.java
View file @
f916b03
...
...
@@ -14,6 +14,7 @@ import com.topdraw.exception.BadRequestException;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
...
...
@@ -50,7 +51,7 @@ public class MemberOperationController {
if
(
Objects
.
nonNull
(
vipExpireTime
))
{
member
.
setVipExpireTime
(
vipExpireTime
);
}
this
.
memberOperationService
.
updat
e
(
member
);
this
.
memberOperationService
.
doUpdateMemberVipAndVipExpireTim
e
(
member
);
return
ResultInfo
.
success
();
}
...
...
@@ -59,23 +60,28 @@ public class MemberOperationController {
@AnonymousAccess
public
ResultInfo
updateVipByMemberCode
(
@Validated
(
value
=
{
UpdateGroup
.
class
})
@RequestBody
MemberOperationBean
resources
)
{
log
.
info
(
"member ==>> doUpdateVipByCode ==>> param ==>> [{}]"
,
resources
);
String
memberCode
=
resources
.
getMemberCode
();
if
(
StringUtils
.
isBlank
(
memberCode
))
{
log
.
error
(
"参数错误,memberCode 不存在"
);
return
ResultInfo
.
failure
(
"参数错误,memberCode 不存在"
);
}
Integer
vip
=
resources
.
getVip
();
if
(
Objects
.
isNull
(
vip
)
||
vip
<
0
)
{
log
.
error
(
"参数错误,vip为空或者小于0 , vip ==>> {}"
,
vip
);
return
ResultInfo
.
failure
(
"参数错误,vip为空或者小于0"
);
}
Timestamp
vipExpireTime
=
resources
.
getVipExpireTime
();
String
memberCode
=
resources
.
getMemberCode
();
MemberDTO
memberDTO
=
this
.
memberOperationService
.
findByCode
(
memberCode
);
Member
member
=
new
Member
();
BeanUtils
.
copyProperties
(
memberDTO
,
member
);
if
(
Objects
.
nonNull
(
vip
))
{
member
.
setCode
(
memberCode
);
member
.
setVip
(
vip
);
}
if
(
Objects
.
nonNull
(
vipExpireTime
))
{
member
.
setVipExpireTime
(
vipExpireTime
);
}
MemberDTO
memberDTO
=
this
.
memberOperationService
.
doUpdateMemberVipAndVipExpireTime
(
member
);
this
.
createVipHistory
(
memberDTO
.
getId
(),
memberDTO
.
getCode
(),
vip
,
vipExpireTime
);
this
.
memberOperationService
.
updateMemberVip
(
member
);
return
ResultInfo
.
success
();
}
...
...
@@ -93,6 +99,7 @@ public class MemberOperationController {
@GetMapping
(
"/getMemberProfileAndCheckVip/{appId}/{memberId}"
)
@ApiOperation
(
"获取会员基本信息并且检查vip状态"
)
@AnonymousAccess
@Deprecated
public
IResultInfo
getMemberProfileAndCheckVip
(
@PathVariable
(
value
=
"appId"
)
String
appId
,
@PathVariable
(
value
=
"memberId"
)
Long
memberId
)
{
MemberProfileDTO
memberProfileDTO
=
this
.
memberOperationService
.
getMemberProfileAndCheckVip
(
memberId
,
appId
);
return
ResultInfo
.
success
(
memberProfileDTO
);
...
...
member-service-impl/src/main/java/com/topdraw/business/process/rest/PointsOperationController.java
View file @
f916b03
...
...
@@ -49,6 +49,7 @@ public class PointsOperationController {
@GetMapping
(
value
=
"/cleanInvalidPointsAndCalculateCurrentPoints/{id}"
)
@ApiOperation
(
"清除过期积分并计算总积分,供客户端会员查询积分时调用"
)
@AnonymousAccess
@Deprecated
public
ResultInfo
cleanInvalidPointsAndCalculateCurrentPoints
(
@PathVariable
(
"id"
)
Long
id
)
{
Long
aLong
=
this
.
pointsOperationService
.
cleanInvalidPointsAndCalculateCurrentPoints
(
id
);
return
ResultInfo
.
success
(
Objects
.
isNull
(
aLong
)
?
0L
:
aLong
);
...
...
@@ -59,15 +60,22 @@ public class PointsOperationController {
@ApiOperation
(
"手动发放积分"
)
@AnonymousAccess
public
ResultInfo
addPoints
(
@Validated
@RequestBody
TempPoints
tempPoints
)
{
log
.
info
(
"手动发放积分,参数 ==>>{} "
,
tempPoints
);
Long
memberId
=
tempPoints
.
getMemberId
();
if
(
Objects
.
isNull
(
memberId
))
{
log
.
error
(
"积分发放失败,参数错误,会员id 不存在"
);
return
ResultInfo
.
failure
(
"积分发放失败,参数错误"
);
}
Long
points
=
tempPoints
.
getPoints
();
Assert
.
notNull
(
memberId
,
"memberId can't be null!"
);
Assert
.
notNull
(
points
,
"points can't be null!"
);
if
(
Objects
.
isNull
(
points
)
||
points
<=
0L
)
{
log
.
error
(
"积分发放失败,参数错误,积分不存在或者积分小于0"
);
return
ResultInfo
.
failure
(
"积分发放失败,参数错误"
);
}
MemberDTO
memberDTO
=
this
.
memberService
.
findById
(
memberId
);
if
(
Objects
.
nonNull
(
memberDTO
))
{
String
code
=
memberDTO
.
getCode
();
Assert
.
notNull
(
code
,
"code can't be null!"
);
tempPoints
.
setMemberCode
(
code
);
tempPoints
.
setMemberId
(
memberDTO
.
getId
());
this
.
pointsOperationService
.
grantPointsByManualByTempPoints
(
tempPoints
);
}
return
ResultInfo
.
success
();
...
...
@@ -176,7 +184,6 @@ public class PointsOperationController {
return
ResultInfo
.
success
(
Arrays
.
asList
(
b
),
description
);
}
// @Log("积分兑换商品")
@PostMapping
(
value
=
"/consumeItemPoints"
)
@ApiOperation
(
"积分兑换商品"
)
@AnonymousAccess
...
...
member-service-impl/src/main/java/com/topdraw/business/process/rest/TaskOperationController.java
View file @
f916b03
...
...
@@ -42,11 +42,11 @@ public class TaskOperationController {
long
l
=
System
.
currentTimeMillis
();
// 任务处理
this
.
taskOperationService
.
dealTask
(
criteria
.
getContent
());
ResultInfo
resultInfo
=
this
.
taskOperationService
.
dealTask
(
criteria
.
getContent
());
long
l2
=
System
.
currentTimeMillis
();
log
.
info
(
"事件处理,结束,总耗时 ==>> {}"
,
(
l2
-
l
));
return
ResultInfo
.
success
()
;
return
resultInfo
;
}
/**
...
...
@@ -99,12 +99,17 @@ public class TaskOperationController {
@PostMapping
(
value
=
"/deleteTask"
)
@ApiOperation
(
"删除任务"
)
@AnonymousAccess
public
void
deleteTask
(
@RequestBody
@Validated
Task
task
)
{
public
ResultInfo
deleteTask
(
@RequestBody
@Validated
Task
task
)
{
log
.
info
(
"taskOperation ==>> deleteTask ==>> param ==>> {}"
,
task
);
Long
id
=
task
.
getId
();
// 删除任务
this
.
taskOperationService
.
deleteTask
(
id
);
Integer
integer
=
this
.
taskOperationService
.
deleteTask
(
id
);
if
(
integer
>
1
)
{
return
ResultInfo
.
success
(
"删除成功"
);
}
else
{
return
ResultInfo
.
failure
(
"删除失败"
);
}
}
/**
...
...
member-service-impl/src/main/java/com/topdraw/business/process/rest/TaskTemplateOperationController.java
View file @
f916b03
...
...
@@ -34,9 +34,8 @@ public class TaskTemplateOperationController {
log
.
info
(
"taskTemplateOperation ==>> create ==>> param ==>> {}"
,
taskTemplate
);
String
code
=
taskTemplate
.
getCode
();
Integer
type
=
taskTemplate
.
getType
();
TaskTemplateDTO
taskTemplateDTO_
=
this
.
taskTemplateOperationService
.
findByCode
(
code
);
TaskTemplateDTO
taskTemplateDTO_1
=
this
.
taskTemplateOperationService
.
findByType
(
type
);
if
(
Objects
.
isNull
(
taskTemplateDTO_
.
getId
())
&&
Objects
.
isNull
(
taskTemplateDTO_1
.
getId
()))
{
Long
count
=
this
.
taskTemplateOperationService
.
countByCodeAndType
(
taskTemplate
);
if
(
count
<
1
)
{
// 新增任务
this
.
taskTemplateOperationService
.
create
(
taskTemplate
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/process/rest/UserOperationController.java
View file @
f916b03
...
...
@@ -38,6 +38,7 @@ import org.springframework.util.Assert;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.constraints.NotNull
;
import
java.io.IOException
;
import
java.net.URLDecoder
;
import
java.sql.Timestamp
;
...
...
@@ -89,7 +90,8 @@ public class UserOperationController {
MemberDTO
memberDTO
=
this
.
memberService
.
findById
(
memberId
);
Member
member
=
new
Member
();
BeanUtils
.
copyProperties
(
memberDTO
,
member
);
member
.
setId
(
memberDTO
.
getId
());
member
.
setCode
(
memberDTO
.
getCode
());
if
(
Objects
.
nonNull
(
vip
))
{
member
.
setVip
(
vip
);
}
...
...
@@ -97,9 +99,9 @@ public class UserOperationController {
member
.
setVipExpireTime
(
vipExpireTime
);
}
this
.
createVipHistory
(
userId
,
vip
,
vipExpireTime
);
this
.
memberOperationService
.
doUpdateMemberVipAndVipExpireTime
(
member
);
this
.
memberOperationService
.
updateMemberVip
(
member
);
this
.
createVipHistory
(
userId
,
vip
,
vipExpireTime
);
return
ResultInfo
.
success
();
}
...
...
@@ -152,8 +154,12 @@ public class UserOperationController {
SubscribeBean
subscribeBean
=
JSONUtil
.
parseMsg2Object
(
data
.
getContent
(),
SubscribeBean
.
class
);
// 解析参数
this
.
parseSubscribe
(
subscribeBean
);
this
.
userOperationService
.
subscribe
(
subscribeBean
);
return
ResultInfo
.
success
();
boolean
subscribe
=
this
.
userOperationService
.
subscribe
(
subscribeBean
);
if
(
subscribe
)
{
return
ResultInfo
.
success
(
"关注成功"
);
}
else
{
return
ResultInfo
.
failure
(
"关注失败"
);
}
}
/**
...
...
@@ -266,6 +272,16 @@ public class UserOperationController {
public
ResultInfo
minaBind
(
@Validated
(
value
=
{
BindGroup
.
class
})
@RequestBody
BindBean
resources
)
{
log
.
info
(
"UserOperationController ==> appletBind ==>> param ==> [{}]"
,
resources
);
Long
memberId
=
resources
.
getMemberId
();
if
(
Objects
.
isNull
(
memberId
))
{
return
ResultInfo
.
failure
(
"参数错误,memberId 不存在"
);
}
String
platformAccount
=
resources
.
getPlatformAccount
();
if
(
StringUtils
.
isBlank
(
platformAccount
))
{
return
ResultInfo
.
failure
(
"参数错误,大屏账号不存在"
);
}
boolean
result
=
this
.
userOperationService
.
minaBind
(
resources
);
return
ResultInfo
.
success
(
result
);
}
...
...
@@ -276,8 +292,17 @@ public class UserOperationController {
public
ResultInfo
minaUnbind
(
@Validated
(
value
=
{
UnbindGroup
.
class
})
@RequestBody
WeixinUnBindBean
weixinUnBindBean
)
{
log
.
info
(
"UserOperationController ==> minaUnbind ==>> param ==> [{}]"
,
weixinUnBindBean
);
this
.
userOperationService
.
minaUnbind
(
weixinUnBindBean
);
return
ResultInfo
.
success
();
Long
memberId
=
weixinUnBindBean
.
getMemberId
();
if
(
Objects
.
isNull
(
memberId
))
{
log
.
error
(
"小屏解绑失败,参数错误,memberId不存在"
);
return
ResultInfo
.
failure
(
"参数错误,会员id不存在"
);
}
boolean
b
=
this
.
userOperationService
.
minaUnbind
(
weixinUnBindBean
);
if
(
b
)
{
return
ResultInfo
.
success
(
"解绑成功"
);
}
else
{
return
ResultInfo
.
failure
(
"解绑失败"
);
}
}
/**
...
...
@@ -293,12 +318,18 @@ public class UserOperationController {
public
ResultInfo
memberPreprocess
(
@RequestBody
String
data
)
{
log
.
info
(
"UserOperationController ==> saveUserInfo ==>> param ==>> [{}]"
,
data
);
Assert
.
notNull
(
data
,
"用户数据不可为空"
);
if
(
StringUtils
.
isBlank
(
data
))
{
log
.
error
(
"预存大小屏账号信息失败,无参数"
);
return
ResultInfo
.
failure
(
"参数错误"
);
}
JSONObject
json
=
JSONObject
.
parseObject
(
data
);
String
unionid
=
json
.
getString
(
"unionid"
);
Assert
.
state
(
StrUtil
.
isNotBlank
(
unionid
),
"unionid不可为空"
);
if
(
StringUtils
.
isBlank
(
unionid
))
{
log
.
error
(
"预存大小屏账号信息失败,参数错误,unionid不存在"
);
return
ResultInfo
.
failure
(
"参数错误,unionid不存在"
);
}
List
<
Object
>
resultList
=
new
ArrayList
<>();
...
...
@@ -471,8 +502,10 @@ public class UserOperationController {
throw
new
BadRequestException
(
GlobeExceptionMsg
.
IPTV_PLATFORM_ACCOUNT_IS_NULL
);
}
this
.
userOperationService
.
tvUnbind
(
resources
);
return
ResultInfo
.
success
();
boolean
b
=
this
.
userOperationService
.
tvUnbind
(
resources
);
if
(
b
)
{
return
ResultInfo
.
success
(
"解绑成功"
);
}
else
return
ResultInfo
.
failure
(
"解绑失败"
);
}
@RequestMapping
(
value
=
"/changeMainAccount"
)
...
...
@@ -493,9 +526,9 @@ public class UserOperationController {
UserTv
userTv
=
new
UserTv
();
userTv
.
setMemberCode
(
memberCode
);
userTv
.
setPlatformAccount
(
platformAccount
);
this
.
userOperationService
.
changeMainAccount
(
userTv
);
boolean
b
=
this
.
userOperationService
.
changeMainAccount
(
userTv
);
return
ResultInfo
.
success
();
return
ResultInfo
.
success
(
b
);
}
@PostMapping
(
value
=
"/deleteAllCollection"
)
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/PointsOperationService.java
View file @
f916b03
...
...
@@ -13,13 +13,6 @@ import java.util.List;
public
interface
PointsOperationService
{
/**
* 手动发放积分
* @param memberId 会员id
* @param tempPoints 积分详情
*/
void
grantPointsByManual
(
Long
memberId
,
TempPoints
tempPoints
);
/**
*
* @param tempPoints
*/
...
...
@@ -44,5 +37,6 @@ public interface PointsOperationService {
* @param memberId
* @return
*/
@Deprecated
Long
cleanInvalidPointsAndCalculateCurrentPoints
(
Long
memberId
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/RightsOperationService.java
View file @
f916b03
package
com
.
topdraw
.
business
.
process
.
service
;
import
com.topdraw.business.module.rights.history.domain.RightsHistory
;
import
com.topdraw.business.
process.domian
.constant.RightType
;
import
com.topdraw.business.
module.rights
.constant.RightType
;
import
java.util.List
;
import
java.util.Map
;
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/TaskOperationService.java
View file @
f916b03
...
...
@@ -11,8 +11,18 @@ import com.topdraw.common.ResultInfo;
*/
public
interface
TaskOperationService
{
/**
*
* @param id
* @return
*/
TaskDTO
findById
(
Long
id
);
/**
*
* @param code
* @return
*/
TaskDTO
findByCode
(
String
code
);
/**
...
...
@@ -26,25 +36,25 @@ public interface TaskOperationService {
*
* @param task
*/
void
createTask
(
Task
task
);
TaskDTO
createTask
(
Task
task
);
/**
*
* @param task
*/
void
updateTask
(
Task
task
);
TaskDTO
updateTask
(
Task
task
);
/**
*
* @param task
*/
void
deleteTask
(
Task
task
);
Integer
deleteTask
(
Task
task
);
/**
*
* @param id
*/
void
deleteTask
(
Long
id
);
Integer
deleteTask
(
Long
id
);
/**
*
...
...
@@ -54,6 +64,4 @@ public interface TaskOperationService {
*/
boolean
createPoint2ChongQing
(
String
platformAccount
,
Long
points
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/TaskTemplateOperationService.java
View file @
f916b03
...
...
@@ -43,6 +43,13 @@ public interface TaskTemplateOperationService {
/**
*
* @param taskTemplate
* @return
*/
Long
countByCodeAndType
(
TaskTemplate
taskTemplate
);
/**
*
* @param id
* @return
*/
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/UserOperationService.java
View file @
f916b03
...
...
@@ -52,13 +52,13 @@ public interface UserOperationService {
* 大屏解绑
* @param userTv
*/
void
tvUnbind
(
TvUnBindBean
userTv
);
boolean
tvUnbind
(
TvUnBindBean
userTv
);
/**
* 大屏切换主账户(会员)
* @param userTv
*/
void
changeMainAccount
(
UserTv
userTv
);
boolean
changeMainAccount
(
UserTv
userTv
);
/**
* 微信公众号关注
...
...
@@ -114,20 +114,6 @@ public interface UserOperationService {
/**
*
* @param memberCode
* @param platformAccount
*/
void
bind
(
String
memberCode
,
String
platformAccount
);
/**
*
* @param memberDTO
* @param userTvDTO
*/
void
bind
(
MemberDTO
memberDTO
,
UserTvDTO
userTvDTO
);
/**
*
* @param memberDTO
* @param platformAccount
* @return
...
...
@@ -152,7 +138,7 @@ public interface UserOperationService {
* 小屏解绑
* @param weixinUnBindBean
*/
void
minaUnbind
(
WeixinUnBindBean
weixinUnBindBean
);
boolean
minaUnbind
(
WeixinUnBindBean
weixinUnBindBean
);
/**
*
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/CouponOperationServiceImpl.java
View file @
f916b03
...
...
@@ -12,6 +12,7 @@ import com.topdraw.business.process.service.CouponOperationService;
import
com.topdraw.business.process.service.member.MemberOperationService
;
import
com.topdraw.business.process.domian.TempCoupon
;
import
com.topdraw.business.process.service.RightsOperationService
;
import
com.topdraw.config.RedisKeyConstants
;
import
com.topdraw.util.TimestampUtil
;
import
com.topdraw.utils.RedisUtils
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -73,7 +74,6 @@ public class CouponOperationServiceImpl implements CouponOperationService {
}
}
/**
* 优惠券领取历史记录表
*
...
...
@@ -92,11 +92,10 @@ public class CouponOperationServiceImpl implements CouponOperationService {
* @param tempCoupon 账号id
*/
private
void
refreshMemberCoupon
(
TempCoupon
tempCoupon
)
{
// Long userId = tempCoupon.getUserId();
Long
memberId
=
tempCoupon
.
getMemberId
();
Integer
rightsAmount
=
tempCoupon
.
getRightsAmount
();
try
{
this
.
redisUtils
.
doLock
(
RedisKeyConstants
.
updateCacheCouponByMemberId
+
memberId
.
toString
());
// 1.历史总优惠券数量
Long
historyCouponCount
=
this
.
getTotalHistoryCoupon
(
memberId
);
// 1.当前总优惠券数量
...
...
@@ -107,15 +106,12 @@ public class CouponOperationServiceImpl implements CouponOperationService {
Long
expireSoonCouponCount
=
this
.
getTotalExpireSoonCoupon
(
memberId
,
EXPIRE_FACTOR_DAY
);
// 4.当前优惠券数量 = 总优惠券-已过期的优惠券
Long
currentCoupon
=
this
.
getCurrentCoupon
(
totalCouponCount
,
expireCouponCount
);
this
.
redisUtils
.
doLock
(
"right::member::id::"
+
memberId
.
toString
());
// 5.更新用户信息(优惠券数量、即将过期的优惠券数量)
this
.
doUpdateMemberInfo
(
memberId
,
currentCoupon
,
expireSoonCouponCount
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
log
.
error
(
e
.
getMessage
());
}
finally
{
this
.
redisUtils
.
doUnLock
(
"right::member::id::"
+
memberId
.
toString
());
this
.
redisUtils
.
doUnLock
(
RedisKeyConstants
.
updateCacheCouponByMemberId
+
memberId
.
toString
());
}
}
...
...
@@ -134,7 +130,6 @@ public class CouponOperationServiceImpl implements CouponOperationService {
MemberDTO
memberDTO
=
this
.
findMemberByMemberId
(
memberId
);
Member
member
=
new
Member
();
// BeanUtils.copyProperties(memberDTO,member);
member
.
setId
(
memberDTO
.
getId
());
member
.
setCode
(
memberDTO
.
getCode
());
member
.
setCouponAmount
(
currentCoupon
);
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/ExpOperationServiceImpl.java
View file @
f916b03
...
...
@@ -11,6 +11,7 @@ import com.topdraw.business.module.member.service.dto.MemberDTO;
import
com.topdraw.business.process.service.ExpOperationService
;
import
com.topdraw.business.process.service.member.MemberOperationService
;
import
com.topdraw.business.process.domian.TempExp
;
import
com.topdraw.config.RedisKeyConstants
;
import
com.topdraw.util.IdWorker
;
import
com.topdraw.util.TimestampUtil
;
import
com.topdraw.utils.RedisUtils
;
...
...
@@ -76,6 +77,7 @@ public class ExpOperationServiceImpl implements ExpOperationService {
*/
private
void
refresh
(
TempExp
tempExp
)
{
try
{
this
.
redisUtils
.
doLock
(
RedisKeyConstants
.
updateCacheExpByMemberId
+
tempExp
.
getMemberId
());
// 原始经验值
long
originExp
=
this
.
getExpByMemberId
(
tempExp
);
...
...
@@ -84,7 +86,6 @@ public class ExpOperationServiceImpl implements ExpOperationService {
long
totalExp
=
this
.
calculateTotalExp
(
originExp
,
tempExp
);
log
.
info
(
"----计算总经验值 ==>> {}"
,
totalExp
);
this
.
redisUtils
.
doLock
(
"right::member::id::"
+
tempExp
.
getMemberId
());
// 2.更新成长值与等级
log
.
info
(
"----更新会员经验值与对应等级 ==>> {}"
,
totalExp
);
this
.
refreshMemberExpAndLevel
(
tempExp
,
totalExp
);
...
...
@@ -93,10 +94,9 @@ public class ExpOperationServiceImpl implements ExpOperationService {
this
.
doInsertExpDetail
(
tempExp
,
originExp
,
totalExp
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
log
.
error
(
"成长值发放失败,"
+
e
.
getMessage
());
}
finally
{
this
.
redisUtils
.
doUnLock
(
"right::member::id::"
+
tempExp
.
getMemberId
());
this
.
redisUtils
.
doUnLock
(
RedisKeyConstants
.
updateCacheExpByMemberId
+
tempExp
.
getMemberId
());
}
}
...
...
@@ -148,7 +148,6 @@ public class ExpOperationServiceImpl implements ExpOperationService {
MemberDTO
memberDTO
=
this
.
findMemberByMemberId
(
memberId
);
Member
member
=
new
Member
();
// BeanUtils.copyProperties(memberDTO, member);
member
.
setId
(
memberDTO
.
getId
());
member
.
setCode
(
memberDTO
.
getCode
());
member
.
setExp
(
totalExp
);
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/PointsOperationServiceImpl.java
View file @
f916b03
...
...
@@ -17,6 +17,8 @@ import com.topdraw.business.process.service.dto.CustomPointsResult;
import
com.topdraw.business.process.service.member.MemberOperationService
;
import
com.topdraw.business.process.service.PointsOperationService
;
import
com.topdraw.business.process.domian.TempPoints
;
import
com.topdraw.config.RedisKeyConstants
;
import
com.topdraw.mq.producer.MessageProducer
;
import
com.topdraw.util.DateUtil
;
import
com.topdraw.util.IdWorker
;
import
com.topdraw.util.TimestampUtil
;
...
...
@@ -83,26 +85,13 @@ public class PointsOperationServiceImpl implements PointsOperationService {
public
void
asyncPointsDetail
(
PointsDetail
pointsDetail
)
{}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
grantPointsByManual
(
Long
memberId
,
TempPoints
tempPoints
){
if
(
Objects
.
nonNull
(
tempPoints
)
&&
Objects
.
nonNull
(
tempPoints
.
getPoints
()))
{
MemberDTO
memberDTo
=
this
.
memberService
.
findById
(
memberId
);
String
memberCode
=
memberDTo
.
getCode
();
tempPoints
.
setMemberCode
(
memberCode
);
this
.
refresh
(
tempPoints
);
}
}
@Override
public
void
grantPointsByManualByTempPoints
(
TempPoints
tempPoints
)
{
if
(
Objects
.
nonNull
(
tempPoints
)
&&
Objects
.
nonNull
(
tempPoints
.
getPoints
()))
{
Timestamp
expireTime
=
tempPoints
.
getExpireTime
();
if
(
Objects
.
isNull
(
expireTime
)){
tempPoints
.
setExpireTime
(
TimestampUtil
.
localDateTime2Timestamp
(
DateUtil
.
getLastDateTimeSecondYear
()));
}
this
.
refresh
(
tempPoints
);
}
}
/**
* 积分消耗
...
...
@@ -118,7 +107,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
Long
memberId
=
tempPoints
.
getMemberId
();
try
{
this
.
redisUtils
.
doLock
(
"member::id::"
+
memberId
.
toString
());
this
.
redisUtils
.
doLock
(
RedisKeyConstants
.
cacheMemberById
+
memberId
.
toString
());
//1.删除过期的积分
this
.
cleanInvalidAvailablePointsByMemberId
(
memberId
);
log
.
info
(
"删除过期的积分 ==>> cleanInvalidAvailablePointsByMemberId ==>> "
);
...
...
@@ -153,11 +142,10 @@ public class PointsOperationServiceImpl implements PointsOperationService {
customPointsResult
.
setPoint
(
currentPoints
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
}
catch
(
Exception
e
)
{
log
.
error
(
"消耗积分失败,"
+
e
.
getMessage
());
}
finally
{
this
.
redisUtils
.
doUnLock
(
"member::id::"
+
memberId
.
toString
());
this
.
redisUtils
.
doUnLock
(
RedisKeyConstants
.
cacheMemberById
+
memberId
.
toString
());
}
return
customPointsResult
;
...
...
@@ -445,7 +433,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
Long
memberId
=
tempPoints
.
getMemberId
();
log
.
info
(
"----------->> 会员id ===>>>>"
+
memberId
);
try
{
this
.
redisUtils
.
doLock
(
RedisKeyConstants
.
updateCachePointsByMemberId
+
memberId
.
toString
());
// 1.可用总积分
Long
currentPoints
=
this
.
findAvailablePointsByMemberId
(
memberId
);
log
.
info
(
"----------->> 获取会员当前可用总积分 --->>>> {}"
,
currentPoints
);
...
...
@@ -466,8 +454,6 @@ public class PointsOperationServiceImpl implements PointsOperationService {
long
soonExpirePoints
=
this
.
getSoonExpirePoints
(
memberId
,
tempPoints
);
log
.
info
(
"----------->> 即将过期的积分 ------->>>>> {}"
,
soonExpirePoints
);
this
.
redisUtils
.
doLock
(
"right::member::id::"
+
memberId
.
toString
());
// 6.更新会员的总积分
log
.
info
(
"----------->> 更新会员的总积分 ------->>>>> 总积分--->>> {}"
,
totalPoints
);
this
.
freshMemberCurrentPoints
(
memberId
,
totalPoints
,
soonExpirePoints
);
...
...
@@ -476,7 +462,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
e
.
printStackTrace
();
throw
e
;
}
finally
{
this
.
redisUtils
.
doUnLock
(
"right::member::id::"
+
memberId
.
toString
());
this
.
redisUtils
.
doUnLock
(
RedisKeyConstants
.
updateCachePointsByMemberId
+
memberId
.
toString
());
}
}
...
...
@@ -530,7 +516,6 @@ public class PointsOperationServiceImpl implements PointsOperationService {
MemberDTO
memberDTO
=
this
.
findMemberByMemberId
(
memberId
);
Member
member
=
new
Member
();
// BeanUtils.copyProperties(memberDTO, member);
member
.
setId
(
memberDTO
.
getId
());
member
.
setCode
(
memberDTO
.
getCode
());
member
.
setPoints
(
Objects
.
nonNull
(
currentPoints
)
?
currentPoints:
0
);
...
...
@@ -541,7 +526,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
((
PointsOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncMemberPoint
(
member
);
}
catch
(
Exception
e
){
throw
e
;
log
.
error
(
"同步会员积分异常,"
+
e
.
getMessage
())
;
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/RightsOperationServiceImpl.java
View file @
f916b03
...
...
@@ -6,7 +6,8 @@ import com.topdraw.business.module.rights.history.domain.RightsHistory;
import
com.topdraw.business.module.rights.history.service.RightsHistoryService
;
import
com.topdraw.business.module.rights.service.RightsService
;
import
com.topdraw.business.module.rights.service.dto.RightsDTO
;
import
com.topdraw.business.process.domian.constant.RightType
;
import
com.topdraw.business.module.rights.constant.RightType
;
import
com.topdraw.business.module.rights.constant.RightTypeConstants
;
import
com.topdraw.business.process.service.CouponOperationService
;
import
com.topdraw.business.process.service.ExpOperationService
;
import
com.topdraw.business.process.service.PointsOperationService
;
...
...
@@ -14,8 +15,6 @@ import com.topdraw.business.process.service.RightsOperationService;
import
com.topdraw.business.process.domian.*
;
import
com.topdraw.util.TimestampUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
org.springframework.stereotype.Service
;
...
...
@@ -24,7 +23,6 @@ import org.springframework.util.StringUtils;
import
java.sql.Timestamp
;
import
java.util.*
;
import
java.util.concurrent.ThreadPoolExecutor
;
/**
* 权益处理
...
...
@@ -148,54 +146,7 @@ public class RightsOperationServiceImpl implements RightsOperationService {
* @param tempRightsMap
*/
private
void
refresh
(
Map
<
RightType
,
Object
>
tempRightsMap
)
{
/*FutureTask<Map<Long,Long>> futureTask1 = new FutureTask(()->{
log.info(Thread.currentThread().getName() + "=========>> start");
// 积分
this.grantPoint((List<TempPoints>) tempRightsMap.get(RightType.POINTS));
log.info(Thread.currentThread().getName() + "=========>>grantPoint end");
// 成长值
// this.grantExp((List<TempExp>) tempRightsMap.get(RightType.EXP));
// 优惠券
// this.grantCoupon((List<TempCoupon>) tempRightsMap.get(RightType.COUPON));
return null;
});
FutureTask<Map<Long,Long>> futureTask2 = new FutureTask(()->{
// 积分
// this.grantPoint((List<TempPoints>) tempRightsMap.get(RightType.POINTS));
// 成长值
this.grantExp((List<TempExp>) tempRightsMap.get(RightType.EXP));
// 优惠券
// this.grantCoupon((List<TempCoupon>) tempRightsMap.get(RightType.COUPON));
return null;
});
FutureTask<Map<Long,Long>> futureTask3 = new FutureTask(()->{
// 积分
// this.grantPoint((List<TempPoints>) tempRightsMap.get(RightType.POINTS));
// 成长值
// this.grantExp((List<TempExp>) tempRightsMap.get(RightType.EXP));
// 优惠券
this.grantCoupon((List<TempCoupon>) tempRightsMap.get(RightType.COUPON));
return null;
});
this.threadPoolTaskExecutor.execute(futureTask1);
this.threadPoolTaskExecutor.execute(futureTask2);
this.threadPoolTaskExecutor.execute(futureTask3);*/
/*this.threadPoolTaskExecutor.execute(() -> {
// 积分
this.grantPoint((List<TempPoints>) tempRightsMap.get(RightType.POINTS));
// 成长值
this.grantExp((List<TempExp>) tempRightsMap.get(RightType.EXP));
// 优惠券
this.grantCoupon((List<TempCoupon>) tempRightsMap.get(RightType.COUPON));
});*/
/*this.threadPoolTaskExecutor.execute(() -> {
log.info(Thread.currentThread().getName() + "=========>> start");
// 积分
this.grantPoint((List<TempPoints>) tempRightsMap.get(RightType.POINTS));
log.info(Thread.currentThread().getName() + "=========>> end");
});*/
this
.
threadPoolTaskExecutor
.
execute
(()
->
{
List
<
TempPoints
>
tempPointsList
=
(
List
<
TempPoints
>)
tempRightsMap
.
get
(
RightType
.
POINTS
);
if
(!
CollectionUtils
.
isEmpty
(
tempPointsList
))
{
...
...
@@ -252,7 +203,7 @@ public class RightsOperationServiceImpl implements RightsOperationService {
// 活动机会
case
ACTIVITYCHANCE:
// TODO MOSS 增加活动机会接口
break
;
// 积分商品
...
...
@@ -298,7 +249,7 @@ public class RightsOperationServiceImpl implements RightsOperationService {
// 权益类型
RightsDTO
rightsDTO
=
this
.
getRights
(
rightId
);
// 权益的实体类型 1:积分;2成长值;3优惠券
String
type
=
rightsDTO
.
getEntityType
();
Integer
type
=
rightsDTO
.
getEntityType
();
Long
expireTime1
=
rightsDTO
.
getExpireTime
();
Timestamp
expireTime
=
null
;
if
(
Objects
.
nonNull
(
expireTime1
)){
...
...
@@ -307,7 +258,8 @@ public class RightsOperationServiceImpl implements RightsOperationService {
switch
(
type
)
{
// 优惠券
case
"1"
:
case
RightTypeConstants
.
DISCOUNT_COUPON
:
Long
entityId
=
rightsDTO
.
getEntityId
();
CouponDTO
couponDTO
=
this
.
findCouponById
(
entityId
);
if
(
Objects
.
nonNull
(
couponDTO
))
{
...
...
@@ -319,16 +271,15 @@ public class RightsOperationServiceImpl implements RightsOperationService {
tempCoupon
.
setRightsSendStrategy
(
0
);
tempCoupon
.
setCode
(
couponDTO
.
getCode
());
if
(
Objects
.
nonNull
(
expireTime
))
// tempCoupon.setExpireTime(TimestampUtil.long2LocalDateTime(expireTime));
tempCoupon
.
setExpireTime
(
expireTime
);
tempCouponList
.
add
(
tempCoupon
);
}
break
;
// 观影券
case
"2"
:
case
RightTypeConstants
.
VIEW_COUPON
:
break
;
// 活动参与机会
case
"3"
:
case
RightTypeConstants
.
JOIN_ACTIVITY
:
break
;
default
:
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/TaskOperationServiceImpl.java
View file @
f916b03
...
...
@@ -23,7 +23,7 @@ import com.topdraw.business.module.user.iptv.domain.UserTv;
import
com.topdraw.business.module.user.iptv.service.UserTvService
;
import
com.topdraw.business.module.user.iptv.service.dto.UserTvDTO
;
import
com.topdraw.business.process.domian.constant.TaskTemplateType
;
import
com.topdraw.business.
process.domian
.constant.RightType
;
import
com.topdraw.business.
module.rights
.constant.RightType
;
import
com.topdraw.business.process.service.PointsOperationService
;
import
com.topdraw.business.process.service.RightsOperationService
;
import
com.topdraw.business.process.service.TaskOperationService
;
...
...
@@ -36,14 +36,21 @@ import com.topdraw.business.module.task.template.service.TaskTemplateService;
import
com.topdraw.business.process.domian.*
;
import
com.topdraw.business.process.service.UserOperationService
;
import
com.topdraw.common.ResultInfo
;
import
com.topdraw.exception.BadRequestException
;
import
com.topdraw.config.LocalConstants
;
import
com.topdraw.business.module.rights.constant.RightTypeConstants
;
import
com.topdraw.business.module.task.template.constant.TaskEventType
;
import
com.topdraw.config.RedisKeyConstants
;
import
com.topdraw.mq.module.mq.DataSyncMsg
;
import
com.topdraw.util.*
;
import
com.topdraw.utils.RedisUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.aop.framework.AopContext
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.CachePut
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.data.redis.core.ValueOperations
;
import
org.springframework.stereotype.Service
;
...
...
@@ -89,6 +96,12 @@ public class TaskOperationServiceImpl implements TaskOperationService {
@Autowired
private
RightsOperationService
rightsOperationService
;
@Autowired
private
RedisUtils
redisUtils
;
@Value
(
"${uc.validPriorityMember}"
)
private
int
validPriorityMember
;
private
static
final
Integer
TASK_FINISH_STATUS
=
1
;
private
static
final
Integer
TASK_UNFINISH_STATUS
=
2
;
private
static
final
Integer
POINTS_TYPE_RANDOM
=
1
;
...
...
@@ -103,9 +116,11 @@ public class TaskOperationServiceImpl implements TaskOperationService {
public
void
asyncDeleteTask
(
Task
task
)
{}
@Override
public
void
createTask
(
Task
task
)
{
/* @CachePut(cacheNames = RedisKeyConstants.cacheTaskByTaskTemplateId, key = "#task.taskTemplateId",
unless = "#result.id == null")*/
public
TaskDTO
createTask
(
Task
task
)
{
Long
taskTemplateId
=
task
.
getTaskTemplateId
();
TaskTemplateDTO
taskTemplateDTO
=
this
.
findByTemplate
Id
(
taskTemplateId
);
TaskTemplateDTO
taskTemplateDTO
=
this
.
taskTemplateService
.
findBy
Id
(
taskTemplateId
);
task
.
setTaskTemplateCode
(
taskTemplateDTO
.
getCode
());
Task
task_
=
TaskBuilder
.
build
(
task
);
...
...
@@ -116,15 +131,8 @@ public class TaskOperationServiceImpl implements TaskOperationService {
}
((
TaskOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncCreateTask
(
task_
);
}
/**
*
* @param taskTemplateId
* @return
*/
private
TaskTemplateDTO
findByTemplateId
(
Long
taskTemplateId
){
return
this
.
taskTemplateService
.
findById
(
taskTemplateId
);
return
taskDTO
;
}
/**
...
...
@@ -139,9 +147,11 @@ public class TaskOperationServiceImpl implements TaskOperationService {
}
@Override
public
void
updateTask
(
Task
task
)
{
/*@CachePut(cacheNames = RedisKeyConstants.cacheTaskByTaskTemplateId, key = "#task.taskTemplateId",
unless = "#result.id == null")*/
public
TaskDTO
updateTask
(
Task
task
)
{
Long
taskTemplateId
=
task
.
getTaskTemplateId
();
TaskTemplateDTO
taskTemplateDTO
=
this
.
findByTemplate
Id
(
taskTemplateId
);
TaskTemplateDTO
taskTemplateDTO
=
this
.
taskTemplateService
.
findBy
Id
(
taskTemplateId
);
task
.
setTaskTemplateCode
(
taskTemplateDTO
.
getCode
());
TaskDTO
update
=
this
.
taskService
.
update
(
task
);
if
(
Objects
.
nonNull
(
update
.
getId
()))
{
...
...
@@ -149,6 +159,8 @@ public class TaskOperationServiceImpl implements TaskOperationService {
}
((
TaskOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncUpdateTask
(
task
);
return
update
;
}
/**
...
...
@@ -167,26 +179,33 @@ public class TaskOperationServiceImpl implements TaskOperationService {
}
@Override
public
void
deleteTask
(
Task
task
)
{
/*@CacheEvict(cacheNames = "", key = "")*/
public
Integer
deleteTask
(
Task
task
)
{
Long
id
=
task
.
getId
();
TaskDTO
taskDTO
=
this
.
findById
(
id
);
if
(
Objects
.
nonNull
(
taskDTO
.
getId
()))
{
task
.
setId
(
taskDTO
.
getId
());
this
.
taskService
.
delete
(
task
);
Integer
delete
=
this
.
taskService
.
delete
(
task
);
task
.
setCode
(
taskDTO
.
getCode
());
((
TaskOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncDeleteTask
(
task
);
return
delete
;
}
return
0
;
}
@Override
public
void
deleteTask
(
Long
id
)
{
public
Integer
deleteTask
(
Long
id
)
{
TaskDTO
taskDTO
=
this
.
findById
(
id
);
if
(
Objects
.
nonNull
(
taskDTO
.
getId
()))
{
Task
task
=
new
Task
();
task
.
setId
(
taskDTO
.
getId
());
task
.
setCode
(
taskDTO
.
getCode
());
this
.
deleteTask
(
task
);
return
this
.
deleteTask
(
task
);
}
return
0
;
}
@Override
...
...
@@ -211,50 +230,97 @@ public class TaskOperationServiceImpl implements TaskOperationService {
public
ResultInfo
dealTask
(
String
content
)
{
DataSyncMsg
dataSyncMsg
=
JSONUtil
.
parseMsg2Object
(
content
,
DataSyncMsg
.
class
);
Integer
event
=
dataSyncMsg
.
getEvent
();
String
msgData1
=
dataSyncMsg
.
getMsgData
();
DataSyncMsg
.
MsgData
msgData
=
JSON
.
parseObject
(
msgData1
,
DataSyncMsg
.
MsgData
.
class
);
log
.
info
(
"事件dataSyncMsg ==>> {}"
,
dataSyncMsg
);
DataSyncMsg
.
MsgData
msgData
=
JSON
.
parseObject
(
dataSyncMsg
.
getMsgData
(),
DataSyncMsg
.
MsgData
.
class
);
log
.
info
(
"事件消息体解析后msgData ==>> {}"
,
msgData
);
if
(
Objects
.
isNull
(
msgData
))
{
log
.
error
(
"参数错误,事件消息体为空"
);
return
ResultInfo
.
failure
(
"参数错误,事件消息体为空"
);
}
String
memberCode
=
msgData
.
getMemberCode
();
// 小屏侧传递的参数是memberId
Long
memberId
=
msgData
.
getMemberId
();
// 大屏侧传递的参数是platformAccount
String
platformAccount
=
msgData
.
getPlatformAccount
();
// 参数校验
if
(
Objects
.
isNull
(
memberId
)
&&
StringUtils
.
isBlank
(
platformAccount
))
{
log
.
error
(
"参数错误,memberId 和 platformAccount 都为null"
);
return
ResultInfo
.
failure
(
"参数错误"
);
}
// 获取会员信息,小屏会员信息通过memberId进行检索,大屏会员信息通过platformAccount进行检索
long
l
=
System
.
currentTimeMillis
();
if
(
StringUtils
.
isNotBlank
(
memberCode
))
{
MemberDTO
memberDTO
=
null
;
if
(
Objects
.
nonNull
(
memberId
))
{
MemberDTO
memberDTO
=
this
.
memberService
.
findByCode
(
memberCode
);
log
.
info
(
"获取
会员信息 ==>> {}"
,
memberDTO
);
memberDTO
=
this
.
memberService
.
findById
(
memberId
);
log
.
info
(
"获取
小屏会员信息 ==>> memberId ==>> {} || 会员信息 ==>> {}"
,
memberId
,
memberDTO
);
// 检查当前会员的黑名单状态
boolean
b
=
this
.
validatedMemberBlackStatus
(
memberDTO
);
log
.
info
(
"会员信息 ==>> {} || 会员id ==>> {} || 黑名单状态 ==>> {}"
,
memberDTO
,
memberDTO
.
getId
(),
memberDTO
.
getBlackStatus
());
if
(!
b
)
{
return
ResultInfo
.
forbidden
(
"会员已被加入黑名单"
);
}
else
if
(
StringUtils
.
isNotBlank
(
platformAccount
))
{
UserTvDTO
userTvDTO
=
this
.
userTvService
.
findByPlatformAccount
(
platformAccount
);
if
(
Objects
.
nonNull
(
userTvDTO
.
getId
()))
{
// 开启积分自动同步至小屏主会员
if
(
validPriorityMember
==
0
)
{
String
priorityMemberCode
=
userTvDTO
.
getPriorityMemberCode
();
if
(
StringUtils
.
isNotBlank
(
priorityMemberCode
))
{
memberDTO
=
this
.
memberService
.
findByCode
(
priorityMemberCode
);
log
.
info
(
"查询绑定的小屏的主会员信息, member ==>> {}"
,
memberDTO
);
}
else
if
(
Objects
.
nonNull
(
userTvDTO
.
getMemberId
()))
{
memberDTO
=
this
.
memberService
.
findById
(
userTvDTO
.
getMemberId
());
log
.
info
(
"查询大屏自身的会员信息, member ==>> {}"
,
memberDTO
);
}
}
else
{
memberDTO
=
this
.
memberService
.
findById
(
userTvDTO
.
getMemberId
());
}
}
else
{
log
.
error
(
"大屏账号不存在,请检查数据, platformAccount ==>> {}"
,
platformAccount
);
return
ResultInfo
.
failure
(
"大屏账号不存在,请检查数据"
);
}
memberId
=
memberDTO
.
getId
();
log
.
info
(
"获取大屏会员信息 ==>> platformAccount ==>> {} || 会员信息 ==>> {}"
,
platformAccount
,
memberDTO
);
}
if
(
Objects
.
isNull
(
memberDTO
.
getId
()))
{
log
.
error
(
"会员信息不存在 ==>> {}"
+
memberDTO
);
return
ResultInfo
.
failure
(
"会员信息不存在"
);
}
// 1.通过任务标识获取任务模板,通过模板参数获取具体的模板
TaskTemplate
taskTemplate
=
this
.
getTaskTemplate
(
event
,
dataSyncMsg
);
log
.
info
(
"获取任务模板 taskTemplate ==>> {} "
,
taskTemplate
);
// 检查黑名单状态 0:正常 1:黑名单
Long
blackStatus
=
memberDTO
.
getBlackStatus
();
if
(
Objects
.
nonNull
(
blackStatus
)
&&
blackStatus
.
equals
(
LocalConstants
.
BLACK_STATUS
))
{
log
.
error
(
"会员已被加入黑名单 ==>> {}"
+
memberDTO
);
return
ResultInfo
.
forbidden
(
"会员已被加入黑名单"
);
}
// 2.通过任务模板获取对应的任务列表
List
<
Task
>
taskList
=
this
.
loadListTaskByTaskTemplate
(
taskTemplate
,
dataSyncMsg
);
log
.
info
(
"获取任务 taskList ==>> [{}] "
,
taskList
);
// 检索满足条件的任务 1.先检查redis中是否存在符合条件的任务 2.从redis中获取当前会员未完成的任务
List
<
Task
>
tasks
=
this
.
findValidTasksAndRefreshTaskProcess
(
memberDTO
,
dataSyncMsg
.
getEvent
(),
msgData
);
log
.
info
(
"查询出来的任务列表 tasks ==>> [{}] "
,
tasks
);
if
(
CollectionUtils
.
isEmpty
(
tasks
))
{
// 类型 1:登录;2:观影;3:参加活动;4:订购;5:优享会员;6:签到;7:完成设置;8:播放记录;
// 10:跨屏绑定;11:积分转移;30:积分兑换商品;98:系统操作;99:其他
log
.
warn
(
"无可执行的任务, 请检查配置,任务模板类型 eventType ==>> {} || 消息体 ==>> msgData {}"
,
dataSyncMsg
.
getEvent
(),
msgData
);
return
ResultInfo
.
failure
(
"无可执行的任务"
);
}
// 4.判断当前用户是否满足任务完成条件
boolean
checkResult
=
this
.
checkTaskCompletion
(
memberId
,
taskList
,
event
,
msgData
);
log
.
info
(
"检查当前会员的任务完成情况 ==>> {} , true:未完成"
,
checkResult
);
if
(
checkResult
)
{
if
(!
CollectionUtils
.
isEmpty
(
tasks
))
{
// 5.权益区分(积分、权益、成长值)
Map
<
RightType
,
Object
>
tempRightsMap
=
this
.
distinguishRight
(
member
Id
,
taskList
,
msgData
,
dataSyncMsg
);
Map
<
RightType
,
Object
>
tempRightsMap
=
this
.
distinguishRight
(
member
DTO
,
tasks
,
msgData
,
dataSyncMsg
);
log
.
info
(
"获取当前任务对应的权益 tempRightsMap ==>> {} "
,
tempRightsMap
);
// 6.风控检查
boolean
result
=
this
.
checkRiskManagement
(
memberId
,
tempRightsMap
);
log
.
info
(
"针对各项权益检查当前会员是否达到风控值 ==>> {},true:已达到风控指标 "
,
result
);
// 6.风控检查
TODO
//
boolean result = this.checkRiskManagement(memberId, tempRightsMap);
//
log.info("针对各项权益检查当前会员是否达到风控值 ==>> {},true:已达到风控指标 ", result);
if
(
result
)
throw
new
BadRequestException
(
"发放失败,已达风控上限"
);
//
if (result) throw new BadRequestException("发放失败,已达风控上限");
long
l1
=
System
.
currentTimeMillis
();
log
.
info
(
"各项检查总耗时 ==>> {}"
,
(
l1
-
l
));
...
...
@@ -265,50 +331,229 @@ public class TaskOperationServiceImpl implements TaskOperationService {
this
.
grantRight
(
tempRightsMap
);
long
l3
=
System
.
currentTimeMillis
();
log
.
info
(
"下发结束,总耗时 ==>> {}"
,
(
l3
-
l2
));
}
return
ResultInfo
.
success
();
}
private
void
saveOrUpdateTaskProcess
(
Long
memberId
,
Task
task
,
Integer
currentActionAmount
)
{
TrTaskProgress
trTaskProgress
=
new
TrTaskProgress
();
trTaskProgress
.
setCurrentActionAmount
(
currentActionAmount
);
trTaskProgress
.
setCompletionTime
(
TimestampUtil
.
now
());
trTaskProgress
.
setStatus
(
1
);
trTaskProgress
.
setTaskId
(
task
.
getId
());
trTaskProgress
.
setMemberId
(
memberId
);
trTaskProgress
.
setTargetActionAmount
(
task
.
getActionAmount
());
// 更新任务完成情况
log
.
info
(
"更新任务完成情况 ==>> {}"
,
trTaskProgress
);
this
.
doRefreshTrTaskProcess
(
trTaskProgress
);
}
/**
* 风控检查
* @param memberId
* @param tempRightsMap
* 获取满足条件的任务列表
* @param memberDTO 会员
* @param msgData 事件消息体
* @param event 任务模板类型
* @return
*/
private
boolean
checkRiskManagement
(
Long
memberId
,
Map
<
RightType
,
Object
>
tempRightsMap
)
{
// TODO 风控
return
false
;
private
List
<
Task
>
findValidTasksAndRefreshTaskProcess
(
MemberDTO
memberDTO
,
Integer
event
,
DataSyncMsg
.
MsgData
msgData
)
{
// 任务是否存在
List
<
Task
>
tasks
=
this
.
taskService
.
findByEvent
(
event
);
if
(
Objects
.
isNull
(
tasks
)
||
CollectionUtils
.
isEmpty
(
tasks
))
{
return
Collections
.
singletonList
(
null
);
}
// 用户行为量
String
param
=
msgData
.
getParam
();
JSONObject
paramJsonObject
=
null
;
if
(
StringUtils
.
isNotBlank
(
param
))
{
paramJsonObject
=
JSONObject
.
parseObject
(
param
,
JSONObject
.
class
);
}
List
<
Task
>
tasksResult
=
new
ArrayList
<>();
// 检查当前会员针对这些任务的完成情况
for
(
Task
task
:
tasks
)
{
/*// 校验用户分组
if (StringUtils.isNotBlank(task.getGroups()) && !task.getGroups().contains(memberDTO.getGroups())) {
log.warn("此用户分组不满足任务要求,任务分组 ==>> {} || 会员分组 ==>> {}",task.getGroups(), memberDTO.getGroups());
continue;
}
// 校验会员等级
if (Objects.nonNull(task.getMemberLevel()) && task.getMemberLevel() < memberDTO.getLevel()) {
log.warn("此用户等级不满足任务要求,任务要求会员等级 ==>> {} || 会员等级 ==>> {}",task.getMemberLevel(), memberDTO.getLevel());
continue;
}
// 校验会员vip
if (Objects.nonNull(task.getMemberVip()) && task.getMemberVip() < memberDTO.getVip()) {
log.warn("此用户vip不满足任务要求,任务要求会员vip ==>> {} || 会员vip ==>> {}",task.getMemberVip(), memberDTO.getVip());
continue;
}*/
TrTaskProgressDTO
trTaskProgressDTO
=
this
.
trTaskProgressService
.
findByMemberIdAndTaskIdAndCompletionTime
(
memberDTO
.
getId
(),
task
.
getId
(),
LocalDateTimeUtil
.
todayStart
());
log
.
info
(
"当前任务完成的情况,trTaskProgressDTO ==>> {}"
,
trTaskProgressDTO
);
// 任务未完成
if
(
Objects
.
isNull
(
trTaskProgressDTO
)
||
!
trTaskProgressDTO
.
getStatus
().
equals
(
TASK_FINISH_STATUS
))
{
// 任务最低行为量
int
actionAmount
=
task
.
getActionAmount
();
// 任务属性
String
attr
=
task
.
getAttr
();
switch
(
event
)
{
// 开机、登录
case
TaskEventType
.
LOGIN
:
if
(
Objects
.
nonNull
(
paramJsonObject
))
{
// 登录天数
int
continueLogin
=
paramJsonObject
.
getInteger
(
"CONTINUE_LOGIN"
);
if
(
continueLogin
>=
actionAmount
)
{
tasksResult
.
add
(
task
);
log
.
info
(
"保存开机、登录任务进度"
);
this
.
saveOrUpdateTaskProcess
(
memberDTO
.
getId
(),
task
,
continueLogin
);
}
}
break
;
// 观影
case
TaskEventType
.
VIEW
:
if
(
Objects
.
nonNull
(
paramJsonObject
))
{
// 观影总时长
int
playDuration_
=
paramJsonObject
.
getInteger
(
"PLAYDURATION"
);
if
(
playDuration_
>=
actionAmount
)
{
tasksResult
.
add
(
task
);
log
.
info
(
"保存观影任务进度"
);
this
.
saveOrUpdateTaskProcess
(
memberDTO
.
getId
(),
task
,
playDuration_
);
}
}
break
;
// 参加活动
case
TaskEventType
.
ACTIVITY
:
if
(
Objects
.
nonNull
(
paramJsonObject
))
{
}
break
;
// 订购
case
TaskEventType
.
ORDER
:
if
(
Objects
.
nonNull
(
paramJsonObject
))
{
}
break
;
// 优享会员
case
TaskEventType
.
MEMBER_PRIORITY
:
if
(
Objects
.
nonNull
(
paramJsonObject
))
{
}
break
;
// 签到
case
TaskEventType
.
SIGN
:
if
(
Objects
.
nonNull
(
paramJsonObject
))
{
// 签到天数
int
signDays
=
paramJsonObject
.
getInteger
(
"SIGN"
);
if
(
signDays
>=
actionAmount
)
{
tasksResult
.
add
(
task
);
log
.
info
(
"保存签到天数任务进度"
);
this
.
saveOrUpdateTaskProcess
(
memberDTO
.
getId
(),
task
,
signDays
);
}
}
break
;
// 完成设置
case
TaskEventType
.
COMPLETE_INFO
:
if
(
Objects
.
nonNull
(
paramJsonObject
))
{
// 完成设置次数
int
completeCount
=
paramJsonObject
.
getInteger
(
"COMPLETECOUNT"
);
if
(
completeCount
>=
actionAmount
)
{
tasksResult
.
add
(
task
);
log
.
info
(
"保存完成用户信息设置任务进度"
);
this
.
saveOrUpdateTaskProcess
(
memberDTO
.
getId
(),
task
,
completeCount
);
}
}
break
;
// 播放时长
case
TaskEventType
.
PLAY
:
// 用户播放总时长
if
(
Objects
.
nonNull
(
paramJsonObject
))
{
int
playDuration
=
paramJsonObject
.
getInteger
(
"PLAYDURATION"
);
if
(
playDuration
>=
actionAmount
)
{
tasksResult
.
add
(
task
);
log
.
info
(
"保存用户播放总时长任务进度"
);
this
.
saveOrUpdateTaskProcess
(
memberDTO
.
getId
(),
task
,
playDuration
);
}
}
break
;
// 跨屏绑定
case
TaskEventType
.
BINDING
:
// 跨屏绑定次数
if
(
Objects
.
nonNull
(
paramJsonObject
))
{
int
bindCount
=
paramJsonObject
.
getInteger
(
"BINDCOUNT"
);
if
(
bindCount
>=
actionAmount
)
{
tasksResult
.
add
(
task
);
log
.
info
(
"保存跨屏绑定任务进度"
);
this
.
saveOrUpdateTaskProcess
(
memberDTO
.
getId
(),
task
,
bindCount
);
}
}
break
;
// 积分转移
case
TaskEventType
.
POINTS_TRANS
:
break
;
// 积分兑换商品
case
TaskEventType
.
POINTS_EXCHANGE_GOODS
:
// 完成设置次数
if
(
Objects
.
nonNull
(
paramJsonObject
))
{
int
exchangeCount
=
paramJsonObject
.
getInteger
(
"EXCHANGCOUNT"
);
if
(
exchangeCount
>=
actionAmount
)
{
tasksResult
.
add
(
task
);
log
.
info
(
"保存积分兑换商品任务进度"
);
this
.
saveOrUpdateTaskProcess
(
memberDTO
.
getId
(),
task
,
exchangeCount
);
}
}
break
;
// 系统操作
case
TaskEventType
.
SYSTEM_OPERATE
:
break
;
default
:
log
.
warn
(
"没有找到对应的任务,findValidTasks"
);
break
;
}
}
}
return
tasksResult
;
}
/**
* 验证会员信息
* @param memberDTO
* 风控检查
* @param memberId
* @param tempRightsMap
* @return
*/
private
boolean
validatedMemberBlackStatus
(
MemberDTO
memberDTO
)
{
Long
blackStatus
=
memberDTO
.
getBlackStatus
();
if
(
Objects
.
nonNull
(
blackStatus
)
&&
blackStatus
==
1
)
{
log
.
error
(
"validatedMember -->> 会员已被加入黑名单 【blackStatus】 -->> "
+
blackStatus
);
private
boolean
checkRiskManagement
(
Long
memberId
,
Map
<
RightType
,
Object
>
tempRightsMap
)
{
// TODO 风控
return
false
;
}
return
true
;
}
/**
* 任务完成情况
* @param resources 任务完成情况
*/
private
void
doRefreshTrTaskProcess
(
TrTaskProgress
resources
)
{
String
date
=
LocalDateTimeUtil
.
todayStart
();
Long
id
=
resources
.
getId
();
if
(
Objects
.
nonNull
(
id
))
{
resources
.
setUpdateTime
(
TimestampUtil
.
now
());
this
.
trTaskProgressService
.
update
(
resources
);
this
.
trTaskProgressService
.
update
(
resources
,
date
);
}
else
{
this
.
trTaskProgressService
.
create
(
resources
);
this
.
trTaskProgressService
.
create
(
resources
,
date
);
}
}
...
...
@@ -326,25 +571,27 @@ public class TaskOperationServiceImpl implements TaskOperationService {
* @param taskList 任务列表
* @return Map<RightType,Object> 权益分类
*/
private
Map
<
RightType
,
Object
>
distinguishRight
(
Long
memberId
,
List
<
Task
>
taskList
,
DataSyncMsg
.
MsgData
msgData
,
DataSyncMsg
dataSyncMsg
)
{
private
Map
<
RightType
,
Object
>
distinguishRight
(
MemberDTO
memberDTO
,
List
<
Task
>
taskList
,
DataSyncMsg
.
MsgData
msgData
,
DataSyncMsg
dataSyncMsg
)
{
Map
<
RightType
,
Object
>
map
=
new
HashMap
<>();
// 区分权益类型(成长值(reward_exp)、积分(reward_points)、实体券),并发放权益
List
<
TempPoints
>
tempPoints
=
new
ArrayList
<>();
List
<
TempExp
>
tempExps
=
new
ArrayList
<>();
for
(
Task
task
:
taskList
)
{
// 积分
List
<
TempPoints
>
tempPointsList
=
this
.
getTempPoints
(
memberId
,
msgData
,
task
,
dataSyncMsg
);
if
(!
CollectionUtils
.
isEmpty
(
tempPoints
List
))
map
.
put
(
RightType
.
POINTS
,
tempPointsList
);
this
.
getTempPoints
(
memberDTO
,
msgData
,
task
,
dataSyncMsg
,
tempPoints
);
if
(!
CollectionUtils
.
isEmpty
(
tempPoints
))
map
.
put
(
RightType
.
POINTS
,
tempPoints
);
// 成长值
List
<
TempExp
>
tempExpList
=
this
.
getTempExp
(
memberId
,
msgData
,
task
,
dataSyncMsg
);
if
(!
CollectionUtils
.
isEmpty
(
tempExp
List
))
map
.
put
(
RightType
.
EXP
,
tempExpList
);
this
.
getTempExp
(
memberDTO
,
msgData
,
task
,
dataSyncMsg
,
tempExps
);
if
(!
CollectionUtils
.
isEmpty
(
tempExp
s
))
map
.
put
(
RightType
.
EXP
,
tempExps
);
// 权益
map
=
this
.
getTempRight
(
memberId
,
task
,
map
);
this
.
getTempRight
(
memberDTO
,
task
,
map
);
}
...
...
@@ -368,7 +615,6 @@ public class TaskOperationServiceImpl implements TaskOperationService {
Long
expireTime1
=
rightsDTO
.
getExpireTime
();
if
(
Objects
.
nonNull
(
expireTime1
))
{
Timestamp
expireTime
=
TimestampUtil
.
long2Timestamp
(
expireTime1
);
if
(
Objects
.
nonNull
(
expireTime
))
tempRights
.
setExpireTime
(
expireTime
);
}
return
tempRights
;
...
...
@@ -395,17 +641,17 @@ public class TaskOperationServiceImpl implements TaskOperationService {
/**
* 权益1
* @param task
* @param task 任务
* @param memberDTO 会员
* @param map 权益分类
* @return
*/
private
Map
<
RightType
,
Object
>
getTempRight
(
Long
memberId
,
Task
task
,
Map
<
RightType
,
Object
>
map
)
{
private
Map
<
RightType
,
Object
>
getTempRight
(
MemberDTO
memberDTO
,
Task
task
,
Map
<
RightType
,
Object
>
map
)
{
// 优惠券
List
<
TempCoupon
>
tempCouponList
=
new
ArrayList
<>();
// 权益列表,用以保存权益记录
List
<
TempRights
>
rightsList
=
new
ArrayList
<>();
// 会员信息
MemberDTO
memberDTO
=
this
.
findMemberById
(
memberId
);
// 权益1
Long
rights1Id
=
task
.
getRightsId
();
...
...
@@ -437,27 +683,9 @@ public class TaskOperationServiceImpl implements TaskOperationService {
// 权益分类
this
.
getTempRightType
(
memberDTO
,
rights3Id
,
rights3Amount
,
rightsSendStrategy
,
tempCouponList
,
rightsList
,
map
);
}
// 优惠券
/*if (!CollectionUtils.isEmpty(tempCouponList)) {
map.put(RightType.COUPON,tempCouponList);
}*/
// 权益
/*if (!CollectionUtils.isEmpty(rightsList)) {
map.put(RightType.RIGHTS,rightsList);
}*/
return
map
;
}
/**
* 会员对象
* @param memberId
* @return
*/
private
MemberDTO
findMemberById
(
Long
memberId
)
{
return
this
.
memberService
.
findById
(
memberId
);
}
/**
* 权益分类
* @param memberDTO
...
...
@@ -486,10 +714,10 @@ public class TaskOperationServiceImpl implements TaskOperationService {
}
// 权益类型
String
type
=
rightsDTO
.
getEntityType
();
Integer
type
=
rightsDTO
.
getEntityType
();
switch
(
type
)
{
// 优惠券
case
"1"
:
case
RightTypeConstants
.
DISCOUNT_COUPON
:
Long
entityId1
=
rightsDTO
.
getEntityId
();
if
(
Objects
.
nonNull
(
entityId1
))
{
CouponDTO
couponDTO
=
this
.
findCouponById
(
entityId1
);
...
...
@@ -505,7 +733,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
}
break
;
// 观影券
case
"2"
:
case
RightTypeConstants
.
VIEW_COUPON
:
Long
entityId2
=
rightsDTO
.
getEntityId
();
if
(
Objects
.
nonNull
(
entityId2
))
{
CouponDTO
couponDTO
=
this
.
findCouponById
(
entityId2
);
...
...
@@ -521,19 +749,19 @@ public class TaskOperationServiceImpl implements TaskOperationService {
}
break
;
// 活动参与机会
case
"3"
:
case
RightTypeConstants
.
JOIN_ACTIVITY
:
map
.
put
(
RightType
.
ACTIVITYCHANCE
,
tempRights
);
break
;
// 积分商品
case
"4"
:
case
RightTypeConstants
.
POINTS_GOODS
:
map
.
put
(
RightType
.
POINTGOODS
,
tempRights
);
break
;
// IPTV产品包
case
"5"
:
case
RightTypeConstants
.
IPTV_PRODUCT
:
map
.
put
(
RightType
.
IPTVPRODUCT
,
tempRights
);
break
;
// IPTV观影权益
case
"6"
:
case
RightTypeConstants
.
IPTV_VIEW
:
map
.
put
(
RightType
.
IPTVVIEW
,
tempRights
);
break
;
default
:
...
...
@@ -567,15 +795,15 @@ public class TaskOperationServiceImpl implements TaskOperationService {
* @param task
* @return
*/
private
List
<
TempExp
>
getTempExp
(
Long
memberId
,
DataSyncMsg
.
MsgData
msgData
,
Task
task
,
DataSyncMsg
dataSyncMsg
)
{
private
void
getTempExp
(
MemberDTO
memberDTO
,
DataSyncMsg
.
MsgData
msgData
,
Task
task
,
DataSyncMsg
dataSyncMsg
,
List
<
TempExp
>
tempExps
)
{
Long
rewardExp
=
task
.
getRewardExp
();
if
(
Objects
.
nonNull
(
rewardExp
)
&&
rewardExp
>
0L
)
{
TempExp
tempExp
=
new
TempExp
();
tempExp
.
setMemberId
(
member
Id
);
tempExp
.
setMemberId
(
member
DTO
.
getId
()
);
tempExp
.
setAppCode
(
msgData
.
getAppCode
());
tempExp
.
setMemberId
(
memberId
);
tempExp
.
setMemberCode
(
msgData
.
getMemberCode
());
tempExp
.
setMemberCode
(
memberDTO
.
getCode
());
tempExp
.
setItemId
(
msgData
.
getItemId
());
tempExp
.
setAccountId
(
msgData
.
getAccountId
());
tempExp
.
setRewardExp
(
task
.
getRewardExp
());
...
...
@@ -586,12 +814,8 @@ public class TaskOperationServiceImpl implements TaskOperationService {
tempExp
.
setActivityId
(
msgData
.
getOrderId
());
Integer
rightsSendStrategy
=
task
.
getRightsSendStrategy
();
tempExp
.
setRightsSendStrategy
(
Objects
.
isNull
(
rightsSendStrategy
)
?
0
:
rightsSendStrategy
);
return
Arrays
.
asList
(
tempExp
);
tempExps
.
add
(
tempExp
);
}
return
null
;
}
/**
...
...
@@ -599,8 +823,8 @@ public class TaskOperationServiceImpl implements TaskOperationService {
* @param task
* @return
*/
private
List
<
TempPoints
>
getTempPoints
(
Long
memberId
,
DataSyncMsg
.
MsgData
msgData
,
Task
task
,
DataSyncMsg
dataSyncMsg
)
{
private
void
getTempPoints
(
MemberDTO
memberDTO
,
DataSyncMsg
.
MsgData
msgData
,
Task
task
,
DataSyncMsg
dataSyncMsg
,
List
<
TempPoints
>
tempPoints
)
{
// 积分: 数值、过期时间、积分类型(定值、随机)、随机积分最大值
Long
rewardPoints
=
task
.
getRewardPoints
();
// 过期时间
...
...
@@ -610,32 +834,32 @@ public class TaskOperationServiceImpl implements TaskOperationService {
Integer
pointsType
=
task
.
getPointsType
();
// 随机积分的最大值
Integer
rewardMaxPoints
=
task
.
getRewardMaxPoints
();
if
(
Objects
.
nonNull
(
rewardPoints
))
{
TempPoints
tempPoint
s
=
new
TempPoints
();
if
(
Objects
.
nonNull
(
rewardPoints
)
&&
rewardPoints
>
0
)
{
TempPoints
tempPoint
=
new
TempPoints
();
// 如果积分是随机的,则取随机值
if
(
pointsType
==
POINTS_TYPE_RANDOM
)
{
rewardPoints
=
RandomUtil
.
getRandomPoints
(
POINTS_MIN
,
rewardMaxPoints
);
}
tempPoint
s
.
setRewardPointsExpireTime
(
rewardPointsExpireTime
);
tempPoint
s
.
setMemberId
(
memberId
);
tempPoint
s
.
setMemberCode
(
msgData
.
getMember
Code
());
tempPoint
s
.
setAppCode
(
msgData
.
getAppCode
());
tempPoint
s
.
setPoints
(
rewardPoints
);
tempPoint
s
.
setPointsType
(
pointsType
);
tempPoint
s
.
setDeviceType
(
dataSyncMsg
.
getDeviceType
());
tempPoint
s
.
setExpireTime
(
expireTime
);
tempPoint
s
.
setOrderId
(
msgData
.
getOrderId
());
tempPoint
s
.
setActivityId
(
msgData
.
getOrder
Id
());
tempPoint
s
.
setMediaId
(
msgData
.
getMediaId
());
tempPoint
s
.
setItemId
(
msgData
.
getItemId
());
tempPoint
s
.
setAccountId
(
msgData
.
getAccountId
());
tempPoint
s
.
setEvtType
(
dataSyncMsg
.
getEvent
());
if
(
pointsType
.
equals
(
POINTS_TYPE_RANDOM
)
)
{
rewardPoints
=
RandomUtil
.
getRandomPoints
(
POINTS_MIN
,
rewardMaxPoints
);
}
tempPoint
.
setRewardPointsExpireTime
(
rewardPointsExpireTime
);
tempPoint
.
setMemberId
(
memberDTO
.
getId
()
);
tempPoint
.
setMemberCode
(
memberDTO
.
get
Code
());
tempPoint
.
setAppCode
(
msgData
.
getAppCode
());
tempPoint
.
setPoints
(
rewardPoints
);
tempPoint
.
setPointsType
(
pointsType
);
tempPoint
.
setDeviceType
(
dataSyncMsg
.
getDeviceType
());
tempPoint
.
setExpireTime
(
expireTime
);
tempPoint
.
setOrderId
(
msgData
.
getOrderId
());
tempPoint
.
setActivityId
(
msgData
.
getActivity
Id
());
tempPoint
.
setMediaId
(
msgData
.
getMediaId
());
tempPoint
.
setItemId
(
msgData
.
getItemId
());
tempPoint
.
setAccountId
(
msgData
.
getAccountId
());
tempPoint
.
setEvtType
(
dataSyncMsg
.
getEvent
());
Integer
rightsSendStrategy
=
task
.
getRightsSendStrategy
();
tempPoints
.
setRightsSendStrategy
(
Objects
.
isNull
(
rightsSendStrategy
)
?
0
:
rightsSendStrategy
);
return
Arrays
.
asList
(
tempPoints
);
tempPoint
.
setRightsSendStrategy
(
Objects
.
isNull
(
rightsSendStrategy
)
?
0
:
rightsSendStrategy
);
tempPoints
.
add
(
tempPoint
);
}
return
null
;
}
/**
...
...
@@ -675,6 +899,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
// 验证会员分组
boolean
result1
=
this
.
validatedMemberGroup
(
memberId
,
taskList
);
log
.
info
(
"验证会员分组结果,==>> {}, true:验证通过"
,
result1
);
if
(!
result1
)
return
false
;
...
...
@@ -802,7 +1027,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
Long
taskId
=
task
.
getId
();
// 任务完成记录
List
<
TrTaskProgressDTO
>
trTaskProgressDTOS
=
this
.
trTaskProgressService
.
findByMemberIdAndTaskIdAndCompletionTime
(
memberId
,
taskId
,
time1
);
null
;
//
this.trTaskProgressService.findByMemberIdAndTaskIdAndCompletionTime(memberId,taskId,time1);
Long
id
=
null
;
Integer
currentActionAmount
=
null
;
...
...
@@ -817,10 +1042,13 @@ public class TaskOperationServiceImpl implements TaskOperationService {
case
8
:
if
(!
CollectionUtils
.
isEmpty
(
trTaskProgressDTOS
))
{
TrTaskProgressDTO
trTaskProgressDTO_0
=
trTaskProgressDTOS
.
get
(
0
);
id
=
trTaskProgressDTO_0
.
getId
();
Integer
status_0
=
trTaskProgressDTO_0
.
getStatus
();
Integer
currentActionAmount_0
=
trTaskProgressDTO_0
.
getCurrentActionAmount
();
Timestamp
completionTime_0
=
trTaskProgressDTO_0
.
getCompletionTime
();
log
.
info
(
"当前任务完成情况,trTaskProgressDTO_0 ==>> {}"
,
trTaskProgressDTO_0
);
if
(
status_0
==
1
&&
currentActionAmount_0
!=
null
&&
Objects
.
nonNull
(
completionTime_0
))
{
log
.
info
(
"任务已完成,返回false"
);
return
false
;
}
}
...
...
@@ -828,7 +1056,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
JSONObject
jsonObject
=
JSON
.
parseObject
(
param
);
Integer
value
=
Integer
.
valueOf
(
jsonObject
.
get
(
"playDuration"
).
toString
());
if
(
value
>=
actionAmount
)
{
currentActionAmount
=
actionAmount
;
currentActionAmount
=
value
;
completionTime
=
TimestampUtil
.
now
();
status
=
TASK_FINISH_STATUS
;
}
...
...
@@ -931,20 +1159,26 @@ public class TaskOperationServiceImpl implements TaskOperationService {
trTaskProgress
.
setTargetActionAmount
(
actionAmount
);
// 更新任务完成情况
log
.
info
(
"更新任务完成情况 ==>> {}"
,
trTaskProgress
);
this
.
doRefreshTrTaskProcess
(
trTaskProgress
);
if
(
status
==
TASK_FINISH_STATUS
)
{
log
.
info
(
"任务已完成, trTaskProgress ==>> {}"
,
trTaskProgress
);
return
true
;
}
return
false
;
}
return
false
;
}
/**
* 获取任务模板对应的任务列表
*
* @param taskTemplate 任务模板
* @return List<task> 任务列表
*/
@Deprecated
private
List
<
Task
>
loadListTaskByTaskTemplate
(
TaskTemplate
taskTemplate
,
DataSyncMsg
dataSyncMsg
)
{
if
(
Objects
.
nonNull
(
taskTemplate
))
{
...
...
@@ -972,7 +1206,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
private
List
<
Task
>
pickUpTask
(
List
<
Task
>
taskList
,
DataSyncMsg
dataSyncMsg
,
Integer
type
)
{
List
<
Task
>
taskList1
=
new
ArrayList
<>();
String
msgData1
=
dataSyncMsg
.
getMsgData
();
String
msgData1
=
null
;
//
dataSyncMsg.getMsgData();
DataSyncMsg
.
MsgData
msgData
=
JSON
.
parseObject
(
msgData1
,
DataSyncMsg
.
MsgData
.
class
);
if
(
Objects
.
nonNull
(
msgData
.
getParam
()))
{
...
...
@@ -1104,7 +1338,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
* @return TaskTemplate 任务模板
*/
private
TaskTemplate
getTaskTemplate
(
Integer
event
,
DataSyncMsg
dataSyncMsg
)
{
String
msgData1
=
dataSyncMsg
.
getMsgData
();
String
msgData1
=
null
;
//
dataSyncMsg.getMsgData();
DataSyncMsg
.
MsgData
msg
=
JSON
.
parseObject
(
msgData1
,
DataSyncMsg
.
MsgData
.
class
);
if
(
Objects
.
nonNull
(
msg
.
getParam
()))
{
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/TaskTemplateOperationServiceImpl.java
View file @
f916b03
...
...
@@ -82,6 +82,11 @@ public class TaskTemplateOperationServiceImpl implements TaskTemplateOperationSe
}
@Override
public
Long
countByCodeAndType
(
TaskTemplate
taskTemplate
)
{
return
this
.
taskTemplateService
.
countByCodeAndType
(
taskTemplate
);
}
@Override
public
TaskTemplateDTO
findById
(
Long
id
)
{
return
this
.
taskTemplateService
.
findById
(
id
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/UserOperationServiceImpl.java
View file @
f916b03
...
...
@@ -114,6 +114,8 @@ public class UserOperationServiceImpl implements UserOperationService {
@AsyncMqSend
public
void
asyncUserTv
(
UserTvDTO
userTvDTO
)
{}
@AsyncMqSend
public
void
asyncUserTvChangeMainAccount
(
UserTvDTO
userTvDTO
)
{}
@AsyncMqSend
public
void
asyncAppletBind
(
MemberAndUserTvDTO
memberAndUserTvDTO
)
{}
@AsyncMqSend
public
void
asyncUnbind
(
MemberAndUserTvDTO
memberAndUserTvDTO
)
{}
...
...
@@ -427,66 +429,61 @@ public class UserOperationServiceImpl implements UserOperationService {
String
headImgUrl
=
resources
.
getHeadimgurl
();
// 小屏账户
UserWeixinDTO
_userWeixinDTO
=
this
.
findFirstByUnionIdAndAppIdAndOpenId
(
unionId
,
appId
,
openId
);
UserWeixinDTO
userWeixinDTO
=
this
.
userWeixinService
.
findFirstByUnionIdAndAppIdAndOpenId
(
unionId
,
appId
,
openId
);
MemberDTO
memberDTO
=
null
;
if
(
Objects
.
isNull
(
_userWeixinDTO
.
getId
())
||
StringUtils
.
isBlank
(
_
userWeixinDTO
.
getUnionid
())
||
Objects
.
isNull
(
_
userWeixinDTO
.
getMemberId
()))
{
if
(
Objects
.
isNull
(
userWeixinDTO
.
getId
())
||
StringUtils
.
isBlank
(
userWeixinDTO
.
getUnionid
())
||
Objects
.
isNull
(
userWeixinDTO
.
getMemberId
()))
{
UserWeixin
userWeixin
=
new
UserWeixin
();
BeanUtils
.
copyProperties
(
resources
,
userWeixin
);
userWeixin
.
setStatus
(
SUBSCRIBE_STATUS
);
// 创建小屏账户同时创建会员
_userWeixinDTO
=
this
.
createWeixinUserAndMember
(
userWeixin
,
1
);
Long
memberId
=
_userWeixinDTO
.
getMemberId
();
userWeixinDTO
=
this
.
createWeixinUserAndMember
(
userWeixin
,
1
);
Long
memberId
=
userWeixinDTO
.
getMemberId
();
memberDTO
=
this
.
memberService
.
findById
(
memberId
);
memberDTO
.
setVip
(
SUBSCRIBE_STATUS
);
}
else
{
// 修改微信账户关注状态
_userWeixinDTO
=
this
.
doUpdateUserWeiXinStatus
(
_userWeixinDTO
,
SUBSCRIBE_STATUS
);
UserWeixin
userWeixin
=
new
UserWeixin
();
userWeixin
.
setId
(
userWeixinDTO
.
getId
());
userWeixin
.
setStatus
(
SUBSCRIBE_STATUS
);
userWeixinDTO
=
this
.
userWeixinService
.
doUpdateWeixinStatus
(
userWeixin
);
// 小屏会员
memberDTO
=
this
.
findMemberByAppIdAndOpenId
(
appId
,
openId
);
memberDTO
=
this
.
memberService
.
findById
(
userWeixinDTO
.
getMemberId
()
);
if
(
memberDTO
!=
null
)
{
if
(
StringUtils
.
isNotBlank
(
headImgUrl
)
&&
StringUtils
.
isNotBlank
(
nickname
))
{
memberDTO
.
setAvatarUrl
(
headImgUrl
);
memberDTO
.
setNickname
(
nickname
);
}
Member
member
=
new
Member
();
member
.
setId
(
memberDTO
.
getId
());
if
(
Objects
.
nonNull
(
memberDTO
.
getId
()))
{
Integer
vip
=
memberDTO
.
getVip
();
// 未购买付费会员
if
(
Objects
.
isNull
(
vip
)
||
vip
<
1
)
{
memberDTO
.
setVip
(
1
);
}
member
.
setVip
(
1
);
member
.
setVipExpireTime
(
null
);
}
else
{
member
.
setVip
(
vip
);
}
}
// 修改会员信息
MemberDTO
_memberDTO1
=
this
.
doUpdateMemberByMemberDTO
(
memberDTO
);
log
.
info
(
"发送关注消息至大屏侧,发送的账号信息 ==>> {} || 会员信息 ==>> {}"
,
_userWeixinDTO
,
_memberDTO1
);
memberDTO
=
this
.
memberService
.
doUpdateMemberVipAndVipExpireTime
(
member
);
log
.
info
(
"发送关注消息至大屏侧,发送的账号信息 ==>> {} || 会员信息 ==>> {}"
,
userWeixinDTO
,
memberDTO
);
// 同步至iptv
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncSubscribe
(
new
MemberAndWeixinUserDTO
(
_memberDTO1
,
_userWeixinDTO
));
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncSubscribe
(
new
MemberAndWeixinUserDTO
(
memberDTO
,
userWeixinDTO
));
// 大屏信息
JSONObject
iptvUserInfo
=
resources
.
getIptvUserInfo
();
log
.
info
(
"存储的大小屏账号信息 iptvUserInfo ==>> {}"
,
iptvUserInfo
);
if
(
Objects
.
nonNull
(
iptvUserInfo
))
{
// 大屏账户
String
platformAccount
=
iptvUserInfo
.
getString
(
"platformAccount"
);
log
.
info
(
"存储的大屏账号信息 platformAccount ==>> {}"
,
platformAccount
);
log
.
info
(
"绑定开始"
);
if
(
StringUtils
.
isBlank
(
platformAccount
))
{
log
.
warn
(
"
绑定失败,platformAccount is null "
);
log
.
error
(
"关注后
绑定失败,platformAccount is null "
);
return
false
;
}
...
...
@@ -563,20 +560,44 @@ public class UserOperationServiceImpl implements UserOperationService {
String
openId
=
resources
.
getOpenid
();
// 修改关注状态 0:未关注
UserWeixinDTO
userWeixinDTO
=
this
.
doUpdateUserWeiXinStatus
(
appId
,
openId
,
UNSUBSCRIBE_STATUS
);
UserWeixinDTO
userWeixinDTO
=
this
.
userWeixinService
.
findFirstByAppIdAndOpenId
(
appId
,
openId
);
if
(
Objects
.
isNull
(
userWeixinDTO
.
getId
()))
{
log
.
error
(
"取关失败,通过appid ==>> {} 和 openId ==>> {} 无法查询到指定的微信账号"
,
appId
,
openId
);
return
false
;
}
if
(
Objects
.
isNull
(
userWeixinDTO
.
getMemberId
()))
{
log
.
error
(
"取关失败,该微信账号无会员id ==>> {}"
,
userWeixinDTO
);
return
false
;
}
UserWeixin
userWeixin
=
new
UserWeixin
();
userWeixin
.
setId
(
userWeixinDTO
.
getId
());
userWeixin
.
setStatus
(
UNSUBSCRIBE_STATUS
);
userWeixinDTO
=
this
.
userWeixinService
.
doUpdateWeixinStatus
(
userWeixin
);
// 会员
MemberDTO
memberDTO
=
this
.
findMemberByUserWeixinDTO
(
userWeixinDTO
);
MemberDTO
memberDTO
=
this
.
memberService
.
findById
(
userWeixinDTO
.
getMemberId
()
);
memberDTO
.
setUserIptvId
(
null
);
// 修改会员vip,如果没有购买会员则取消团粉
MemberDTO
_memberDTO
=
this
.
doUpdateMemberVip
(
memberDTO
,
0
);
// 同步至iptv
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncUnsubscribe
(
new
MemberAndWeixinUserDTO
(
_memberDTO
,
userWeixinDTO
));
Integer
vip
=
memberDTO
.
getVip
();
vip
=
(
vip
==
null
?
0
:
vip
);
// 未购买付费会员
if
(
vip
<=
1
)
{
Member
member
=
new
Member
();
member
.
setId
(
memberDTO
.
getId
());
member
.
setCode
(
memberDTO
.
getCode
());
member
.
setVipExpireTime
(
null
);
member
.
setVip
(
0
);
memberDTO
=
this
.
memberService
.
doUpdateMemberVipAndVipExpireTime
(
member
);
}
// 关注记录
this
.
saveWechatSubscribeRecord
(
_memberDTO
,
""
,
2
);
this
.
saveWechatSubscribeRecord
(
memberDTO
,
""
,
2
);
// 同步至iptv
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncUnsubscribe
(
new
MemberAndWeixinUserDTO
(
memberDTO
,
userWeixinDTO
));
return
true
;
}
...
...
@@ -656,31 +677,35 @@ public class UserOperationServiceImpl implements UserOperationService {
* @param resources
*/
@Override
public
void
changeMainAccount
(
UserTv
resources
)
{
public
boolean
changeMainAccount
(
UserTv
resources
)
{
// 会员编码
String
memberCode
=
resources
.
getMemberCode
();
this
.
findMemberByCode
(
memberCode
);
MemberDTO
memberDTO
=
this
.
memberService
.
findByCode
(
memberCode
);
if
(
Objects
.
isNull
(
memberDTO
.
getId
()))
{
log
.
error
(
"会员信息不存在, memberCode ==>> {}"
,
memberCode
);
return
false
;
}
String
platformAccount
=
resources
.
getPlatformAccount
();
UserTvDTO
userTvDTO
=
this
.
findByPlatformAccount
(
platformAccount
);
UserTvDTO
userTvDTO
=
this
.
userTvService
.
findByPlatformAccount
(
platformAccount
);
if
(
Objects
.
nonNull
(
userTvDTO
))
{
if
(
StringUtils
.
isNotBlank
(
userTvDTO
.
getPriorityMemberCode
())
&&
userTvDTO
.
getPriorityMemberCode
().
equalsIgnoreCase
(
memberCode
))
throw
new
BadRequestException
(
"会员已是主账户"
);
}
else
{
throw
new
EntityNotFoundException
(
UserTvDTO
.
class
,
"platformAccount"
,
GlobeExceptionMsg
.
IPTV_IS_NULL
);
}
// 设置主会员
UserTvDTO
_userTvDTO
=
this
.
bondPriorityMember
(
userTvDTO
,
memberCode
,
"manual"
);
// UserTvDTO _userTvDTO = this.bondPriorityMember(userTvDTO, memberCode, "manual");
UserTv
userTv
=
new
UserTv
();
userTv
.
setId
(
userTvDTO
.
getId
());
userTv
.
setPriorityMemberCode
(
memberCode
);
userTvDTO
=
this
.
userTvService
.
doUpdatePriorityMemberCode
(
userTv
);
// 同步至iptv
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncUserTv
(
_userTvDTO
);
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncUserTvChangeMainAccount
(
userTvDTO
);
return
true
;
}
/**
...
...
@@ -688,41 +713,47 @@ public class UserOperationServiceImpl implements UserOperationService {
* @param resources
*/
@Override
public
void
tvUnbind
(
TvUnBindBean
resources
)
{
public
boolean
tvUnbind
(
TvUnBindBean
resources
)
{
Boolean
autoModel
=
resources
.
getAutoModel
();
// 希望绑定的会员code
String
bindMemberCode
=
resources
.
getBindMemberCode
();
String
platformAccount
=
resources
.
getPlatformAccount
();
String
memberCode
=
resources
.
getMemberCode
();
UserTvDTO
userTvDTO
=
this
.
findByPlatformAccount
(
platformAccount
);
UserTvDTO
userTvDTO
=
this
.
userTvService
.
findByPlatformAccount
(
platformAccount
);
log
.
info
(
"大屏解绑,通过大屏账号查询大屏账号信息,结果 userTvDTO ==>> {}"
,
userTvDTO
);
if
(
Objects
.
isNull
(
userTvDTO
.
getId
()))
throw
new
EntityNotFoundException
(
UserTvDTO
.
class
,
"PlatformAccount"
,
GlobeExceptionMsg
.
IPTV_IS_NULL
);
if
(
Objects
.
isNull
(
userTvDTO
.
getId
()))
{
log
.
error
(
"大屏解绑失败,无对应的大屏账号信息, platformAccount ==>> {}"
,
platformAccount
);
return
false
;
}
MemberDTO
memberDTO
=
this
.
memberService
.
findByCode
(
memberCode
);
log
.
info
(
"大屏解绑,通过会员code查询会员信息,结果memberDTO==>>{}"
,
memberDTO
);
if
(
Objects
.
isNull
(
memberDTO
.
getId
()))
{
log
.
error
(
"大屏解绑失败,无对应的会员信息, memberCode ==>> {}"
,
memberCode
);
return
false
;
}
// 解绑(置空大屏信息)
log
.
info
(
"开始置空会员的user_iptv_id ==>> {}"
,
memberDTO
);
MemberDTO
_memberDTO
=
this
.
minaUnbind_
(
memberDTO
);
if
(
Objects
.
isNull
(
_memberDTO
))
{
_memberDTO
=
memberDTO
;
}
log
.
info
(
"会员信息置空大屏的结果,_memberDTO ==>> {}"
,
_memberDTO
);
Member
member
=
new
Member
();
member
.
setId
(
memberDTO
.
getId
());
member
.
setCode
(
memberDTO
.
getCode
());
member
.
setBindIptvTime
(
null
);
member
.
setUserIptvId
(
null
);
member
.
setBindIptvPlatformType
(
null
);
log
.
info
(
"置空会员绑定的大屏信息, member ==>> {}"
,
member
);
memberDTO
=
this
.
memberService
.
doUpdateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime
(
member
);
log
.
info
(
"会员信息置空大屏的结果,memberDTO ==>> {}"
,
memberDTO
);
memberDTO
.
setPlatformAccount
(
platformAccount
);
// 置空主账号
log
.
info
(
"开始置空大屏账号的主会员priorityMemberCode"
);
UserTvDTO
_userTvDTO
=
this
.
resetMainAccount
(
memberCode
,
userTvDTO
.
getId
(),
autoModel
,
bindMemberCode
);
if
(
Objects
.
isNull
(
_userTvDTO
)){
_userTvDTO
=
userTvDTO
;
}
log
.
info
(
"大屏账号置空主会员的结果,_userTvDTO ==>> {}"
,
_userTvDTO
);
userTvDTO
=
this
.
resetMainAccount
(
memberDTO
,
userTvDTO
,
bindMemberCode
);
userTvDTO
.
setMemberCode
(
memberCode
);
// 同步至iptv
log
.
info
(
"开始同步解绑,参数 ==>> {} "
,
new
MemberAndUserTvDTO
(
_memberDTO
,
_userTvDTO
));
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncUnbind
(
new
MemberAndUserTvDTO
(
_memberDTO
,
_userTvDTO
));
log
.
info
(
"大屏账号置空主会员的结果,userTvDTO ==>> {}"
,
userTvDTO
);
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncUnbind
(
new
MemberAndUserTvDTO
(
memberDTO
,
userTvDTO
));
return
true
;
}
...
...
@@ -919,57 +950,60 @@ public class UserOperationServiceImpl implements UserOperationService {
@Override
public
boolean
minaBind
(
BindBean
resources
)
{
Long
_
memberId
=
resources
.
getMemberId
();
Long
memberId
=
resources
.
getMemberId
();
String
platformAccount
=
resources
.
getPlatformAccount
();
// 大屏账户
UserTvDTO
userTvDTO
=
this
.
userTvService
.
findByPlatformAccount
(
platformAccount
);
log
.
info
(
"查询大屏账号信息, userTvDTO ==>> {}"
,
userTvDTO
);
// 账户是否存在
if
(
Objects
.
isNull
(
userTvDTO
.
getId
()))
{
log
.
error
(
"
appletBind ==> platformAccount ==> [{}]
"
,
platformAccount
);
throw
new
EntityNotFoundException
(
UserTvDTO
.
class
,
"id"
,
GlobeExceptionMsg
.
IPTV_IS_NULL
)
;
log
.
error
(
"
大屏账号信息不存在,platformAccount ==> {}
"
,
platformAccount
);
return
false
;
}
resources
.
setPlatformUserId
(
userTvDTO
.
getId
());
UserWeixinDTO
userWeixinDTO
=
null
;
// 微信账户
if
(
Objects
.
nonNull
(
_
memberId
))
{
userWeixinDTO
=
this
.
userWeixinService
.
findFirstByMemberId
(
_
memberId
);
}
if
(
Objects
.
nonNull
(
memberId
))
{
UserWeixinDTO
userWeixinDTO
=
this
.
userWeixinService
.
findFirstByMemberId
(
memberId
);
log
.
info
(
"检查小屏账号是否存在, userWeixinDTO ==>> {}"
,
userWeixinDTO
);
// 账户是否存在
if
(
Objects
.
isNull
(
userWeixinDTO
.
getId
()))
{
log
.
error
(
"appletBind ==> weixinId ==> [{}]"
,
userWeixinDTO
.
getId
()
);
throw
new
EntityNotFoundException
(
UserWeixinDTO
.
class
,
"id"
,
userWeixinDTO
.
getId
().
toString
())
;
log
.
error
(
"通过会员id无法找到对应的微信账号,memberId ==> {}"
,
memberId
);
return
false
;
}
// 会员
Long
memberId
=
userWeixinDTO
.
getMemberId
();
if
(
Objects
.
isNull
(
memberId
))
{
log
.
error
(
"appletBind ==> memberId ==> [{}]"
,
memberId
);
throw
new
EntityNotFoundException
(
UserWeixinDTO
.
class
,
"memberId"
,
memberId
.
toString
());
}
MemberDTO
memberDTO
=
this
.
findMemberById
(
memberId
);
MemberDTO
memberDTO
=
this
.
memberService
.
findById
(
memberId
);
log
.
info
(
"检查会员是否存在, memberDTO ==>> {}"
,
memberDTO
);
if
(
Objects
.
nonNull
(
memberDTO
.
getId
()))
{
Long
userIptvId
=
memberDTO
.
getUserIptvId
();
if
(
Objects
.
nonNull
(
userIptvId
))
if
(
Objects
.
nonNull
(
userIptvId
))
{
log
.
error
(
"该会员已绑定,大屏id ==> {}"
,
userIptvId
);
throw
new
BadRequestException
(
GlobeExceptionMsg
.
ALREADY_BIND
);
}
}
else
{
log
.
error
(
"会员信息不存在,请检查数据, memberId ==>> {}"
,
memberId
);
return
false
;
}
// 主账户会员
String
code
=
memberDTO
.
getCode
();
// 更新大屏信息,同步大屏信息时使用
userTvDTO
.
setMemberCode
(
code
);
// 主账户
String
priorityMemberCode
=
userTvDTO
.
getPriorityMemberCode
();
if
(
StringUtils
.
isBlank
(
priorityMemberCode
))
{
// 设置主账号
userTvDTO
.
setPriorityMemberCode
(
code
);
priorityMemberCode
=
memberDTO
.
getCode
();
log
.
info
(
"大屏账号为绑定主账号,开始设置主会员 priorityMemberCode ==>> {}"
,
priorityMemberCode
);
UserTv
userTv
=
new
UserTv
();
userTv
.
setId
(
userTvDTO
.
getId
());
userTv
.
setPriorityMemberCode
(
priorityMemberCode
);
// 更新大屏账户
userTvDTO
=
this
.
userTvService
.
doUpdatePriorityMemberCode
(
userTv
);
userTvDTO
.
setMemberCode
(
memberDTO
.
getCode
());
}
Member
member
=
new
Member
();
member
.
setId
(
memberDTO
.
getId
());
member
.
setCode
(
memberDTO
.
getCode
());
String
platform
=
userTvDTO
.
getPlatform
();
// 绑定IPTV平台 0:未知;1:电信;2:移动;3:联通
Integer
bindIptvPlatformType
=
0
;
...
...
@@ -985,54 +1019,23 @@ public class UserOperationServiceImpl implements UserOperationService {
if
(
UserConstant
.
platform_dx
.
contains
(
platform
))
{
bindIptvPlatformType
=
PLATFORM_LIST
[
1
];
}
memberDTO
.
setUserIptvId
(
userTvDTO
.
getId
());
memberDTO
.
setBindIptvTime
(
TimestampUtil
.
now
());
memberDTO
.
setBindIptvPlatformType
(
bindIptvPlatformType
);
memberDTO
.
setPlatformAccount
(
platformAccount
);
// 更新大屏账户
UserTvDTO
_userTvDTO
=
this
.
doUpdateUserTv
(
userTvDTO
);
member
.
setUserIptvId
(
userTvDTO
.
getId
());
member
.
setBindIptvTime
(
TimestampUtil
.
now
());
member
.
setBindIptvPlatformType
(
bindIptvPlatformType
);
log
.
info
(
"修改小屏会员对应的绑定关系,member ==>> {}"
,
member
);
// 修改会员信息
MemberDTO
_memberDTO
=
this
.
doUpdateMemberByMemberDTO
(
memberDTO
);
memberDTO
=
this
.
memberService
.
doUpdateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime
(
member
);
memberDTO
.
setPlatformAccount
(
platformAccount
);
// 同步至iptv
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
())
.
asyncAppletBind
(
new
MemberAndUserTvDTO
(
_memberDTO
,
_
userTvDTO
));
.
asyncAppletBind
(
new
MemberAndUserTvDTO
(
memberDTO
,
userTvDTO
));
return
true
;
}
/**
*
* @param memberCode
* @param platformAccount
*/
@Override
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
void
bind
(
String
memberCode
,
String
platformAccount
)
{
MemberDTO
memberDTO
=
this
.
memberService
.
findByCode
(
memberCode
);
this
.
bind
(
memberDTO
,
platformAccount
);
}
/**
*
* @param memberDTO
* @param userTvDTO
*/
@Override
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
void
bind
(
MemberDTO
memberDTO
,
UserTvDTO
userTvDTO
)
{
String
platformAccount
=
userTvDTO
.
getPlatformAccount
();
if
(
StringUtils
.
isBlank
(
platformAccount
))
{
return
;
}
// 绑定
this
.
bind
(
memberDTO
,
platformAccount
);
}
/**
*
* @param memberDTO
* @param platformAccount
* @return
...
...
@@ -1119,8 +1122,11 @@ public class UserOperationServiceImpl implements UserOperationService {
memberDTO
.
setVip
(
vip1
);
Member
member
=
new
Member
();
BeanUtils
.
copyProperties
(
memberDTO
,
member
);
this
.
memberService
.
update
(
member
);
member
.
setId
(
memberDTO
.
getId
());
member
.
setCode
(
memberDTO
.
getCode
());
member
.
setVipExpireTime
(
null
);
// this.memberService.update(member);
this
.
memberService
.
doUpdateMemberVipAndVipExpireTime
(
member
);
return
memberDTO
;
}
...
...
@@ -1153,13 +1159,11 @@ public class UserOperationServiceImpl implements UserOperationService {
if
(
Objects
.
nonNull
(
userWeixinDTO
.
getId
()))
{
userWeixinDTO
.
setStatus
(
status
);
UserWeixin
userWeixin
=
new
UserWeixin
();
BeanUtils
.
copyProperties
(
userWeixinDTO
,
userWeixin
);
this
.
userWeixinService
.
update
(
userWeixin
);
userWeixin
.
setId
(
userWeixinDTO
.
getId
()
);
userWeixin
.
setStatus
(
status
);
userWeixinDTO
=
this
.
userWeixinService
.
doUpdateWeixinStatus
(
userWeixin
);
return
userWeixinDTO
;
}
return
userWeixinDTO
;
...
...
@@ -1245,16 +1249,13 @@ public class UserOperationServiceImpl implements UserOperationService {
/**
* 重置主账号
* @param member
Code
会员code
* @param
id
大屏id
* @param
autoModel
true:自动设置主账号 false: 手动设置
* @param member
DTO
会员code
* @param
userTvDTO
大屏id
* @param
bindMemberCode
true:自动设置主账号 false: 手动设置
*/
private
UserTvDTO
resetMainAccount
(
String
memberCode
,
Long
id
,
Boolean
autoModel
,
String
bindMemberCode
)
{
private
UserTvDTO
resetMainAccount
(
MemberDTO
memberDTO
,
UserTvDTO
userTvDTO
,
String
bindMemberCode
)
{
UserTvDTO
userTvDTO
=
this
.
userTvService
.
findByPriorityMemberCode
(
memberCode
);
log
.
info
(
"大屏解绑,重置大屏账号的主会员,查看当前会员是否是主账号 ==>>memberCode ==>> {} || 大屏账号 ==>> userTvDTO ==>> {}"
,
userTvDTO
);
if
(
Objects
.
nonNull
(
userTvDTO
.
getId
()))
{
log
.
info
(
"主账号存在"
);
if
(
StringUtils
.
isBlank
(
bindMemberCode
))
{
// 有其他绑定的小程序会员,排除自己
/*List<MemberDTO> memberDTOList = this.memberService.findByUserIptvId(id);
...
...
@@ -1298,56 +1299,28 @@ public class UserOperationServiceImpl implements UserOperationService {
}*/
log
.
info
(
"无其他绑定的小屏会员信息 "
);
// 绑定新的主账号
UserTvDTO
_userTvDTO
=
this
.
bondPriorityMember
(
userTvDTO
,
null
,
"manual"
);
// UserTvDTO _userTvDTO = this.bondPriorityMember(userTvDTO, null, "manual");
UserTv
userTv
=
new
UserTv
();
userTv
.
setId
(
userTvDTO
.
getId
());
userTv
.
setPlatform
(
userTvDTO
.
getPlatformAccount
());
userTv
.
setPriorityMemberCode
(
null
);
UserTvDTO
_userTvDTO
=
this
.
userTvService
.
doUpdatePriorityMemberCode
(
userTv
);
log
.
info
(
"绑定新的主账号 ==>> _userTvDTO ==>> {}"
,
_userTvDTO
);
return
_userTvDTO
;
}
else
{
this
.
memberService
.
findByCode
(
bindMemberCode
);
UserTv
userTv
=
new
UserTv
();
userTv
.
setId
(
userTvDTO
.
getId
());
userTv
.
setPlatform
(
userTvDTO
.
getPlatformAccount
());
userTv
.
setPriorityMemberCode
(
bindMemberCode
);
// 绑定新的主账号
UserTvDTO
_userTvDTO
=
this
.
bondPriorityMember
(
userTvDTO
,
bindMemberCode
,
"manual"
);
UserTvDTO
_userTvDTO
=
this
.
userTvService
.
doUpdatePriorityMemberCode
(
userTv
);
return
_userTvDTO
;
}
}
return
userTvDTO
;
}
/**
* 解绑(置空大屏信息)
* @param memberDTOS
*/
private
MemberDTO
minaUnbind_
(
MemberDTO
memberDTOS
)
{
// 若无关系,不做处理
if
(
Objects
.
nonNull
(
memberDTOS
)
&&
Objects
.
isNull
(
memberDTOS
.
getUserIptvId
()))
return
null
;
Member
member
=
new
Member
();
memberDTOS
.
setBindIptvTime
(
null
);
memberDTOS
.
setUserIptvId
(
null
);
memberDTOS
.
setBindIptvPlatformType
(
null
);
BeanUtils
.
copyProperties
(
memberDTOS
,
member
);
log
.
info
(
"大屏绑定,置空绑定的大屏信息, member ==>> {}"
,
member
);
MemberDTO
memberDTO
=
this
.
memberService
.
update
(
member
);
return
memberDTO
;
}
/**
*
* @param memberCode 会员编码
* @return
*/
private
MemberDTO
findMemberByCode
(
String
memberCode
)
{
return
memberService
.
findByCode
(
memberCode
);
}
/**
...
...
@@ -1380,17 +1353,6 @@ public class UserOperationServiceImpl implements UserOperationService {
}
/**
* 更新大屏
* @param userTvDTO
*/
private
UserTvDTO
doUpdateUserTv
(
UserTvDTO
userTvDTO
)
{
UserTv
userTv
=
new
UserTv
();
BeanUtils
.
copyProperties
(
userTvDTO
,
userTv
);
userTv
.
setUpdateTime
(
TimestampUtil
.
now
());
return
this
.
userTvService
.
update
(
userTv
);
}
/**
* 同一用户有多个微信APP的情况下展示同一个账户信息
* 原则:那个先创建就用那个id
* @param userWeixinDTO
...
...
@@ -1440,17 +1402,6 @@ public class UserOperationServiceImpl implements UserOperationService {
/**
* 获取小屏账户
* @param unionId
* @param appId
* @param openId
* @return
*/
private
UserWeixinDTO
findFirstByUnionIdAndAppIdAndOpenId
(
String
unionId
,
String
appId
,
String
openId
)
{
return
this
.
userWeixinService
.
findFirstByUnionIdAndAppIdAndOpenId
(
unionId
,
appId
,
openId
);
}
/**
* 获取小屏账户
* @param appId
* @param openId
* @return
...
...
@@ -1524,21 +1475,86 @@ public class UserOperationServiceImpl implements UserOperationService {
}
@Override
public
void
minaUnbind
(
WeixinUnBindBean
weixinUnBindBean
)
{
public
boolean
minaUnbind
(
WeixinUnBindBean
weixinUnBindBean
)
{
Long
memberId
=
weixinUnBindBean
.
getMemberId
();
MemberDTO
memberDTO
=
this
.
memberService
.
findById
(
memberId
);
if
(
Objects
.
isNull
(
memberDTO
.
getId
()))
{
log
.
error
(
"小屏解绑失败,会员信息不存在 memberId ==>> {}"
,
memberId
);
return
false
;
}
Assert
.
notNull
(
memberDTO
.
getUserIptvId
(),
GlobeExceptionMsg
.
IPTV_IS_NULL
);
if
(
Objects
.
isNull
(
memberDTO
.
getUserIptvId
()))
{
log
.
error
(
"小屏解绑失败,未查询到大屏的大屏信息, memberId ==>> {}"
,
memberId
);
return
false
;
}
UserTvDTO
userTvDTO
=
this
.
userTvService
.
findById
(
memberDTO
.
getUserIptvId
());
if
(
Objects
.
isNull
(
userTvDTO
.
getId
()))
{
log
.
info
(
"小屏解绑失败,绑定的大屏账号不存在 userIptvId ==>> {}"
,
memberDTO
.
getUserIptvId
());
return
false
;
}
boolean
b
=
this
.
tvUnbindAndSetNewPriorityMemberCode
(
memberDTO
,
userTvDTO
);
return
b
;
}
private
boolean
tvUnbindAndSetNewPriorityMemberCode
(
MemberDTO
memberDTO
,
UserTvDTO
userTvDTO
)
{
// 解绑(置空大屏信息)
Member
member
=
new
Member
();
member
.
setId
(
memberDTO
.
getId
());
member
.
setCode
(
memberDTO
.
getCode
());
member
.
setBindIptvTime
(
null
);
member
.
setUserIptvId
(
null
);
member
.
setBindIptvPlatformType
(
null
);
log
.
info
(
"置空会员绑定的大屏信息, member ==>> {}"
,
member
);
memberDTO
=
this
.
memberService
.
doUpdateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime
(
member
);
log
.
info
(
"会员信息置空大屏的结果,memberDTO ==>> {}"
,
memberDTO
);
memberDTO
.
setPlatformAccount
(
userTvDTO
.
getPlatformAccount
());
// 有其他绑定的小程序会员,排除自己
List
<
MemberDTO
>
memberDTOS
=
this
.
memberService
.
findByUserIptvId
(
userTvDTO
.
getId
());
log
.
info
(
"后台指定一个默认主会员,通过大屏id查询到的绑定的小屏会员memberDTOList ==>> {}"
,
memberDTOS
);
if
(!
CollectionUtils
.
isEmpty
(
memberDTOS
))
{
String
oldMemberCode
=
memberDTO
.
getCode
();
List
<
MemberDTO
>
collect
=
memberDTOS
.
stream
().
filter
(
memberDTO_
->
!
memberDTO_
.
getCode
().
equalsIgnoreCase
(
oldMemberCode
)).
collect
(
Collectors
.
toList
());
log
.
info
(
"过滤掉当前会员 ==>> {}"
,
collect
);
if
(!
CollectionUtils
.
isEmpty
(
collect
))
{
TvUnBindBean
tvUnBindBean
=
new
TvUnBindBean
();
tvUnBindBean
.
setMemberId
(
memberId
);
tvUnBindBean
.
setAutoModel
(
weixinUnBindBean
.
getAutoModel
());
String
platformAccount
=
userTvDTO
.
getPlatformAccount
();
tvUnBindBean
.
setPlatformAccount
(
platformAccount
);
this
.
tvUnbind
(
tvUnBindBean
);
// 按绑定时间倒排
collect
.
sort
(
new
Comparator
<
MemberDTO
>()
{
@Override
public
int
compare
(
MemberDTO
memberDTO
,
MemberDTO
t1
)
{
return
t1
.
getBindIptvTime
().
compareTo
(
memberDTO
.
getBindIptvTime
());
}
});
// 绑定新的主账号
UserTv
userTv
=
new
UserTv
();
userTv
.
setId
(
userTvDTO
.
getId
());
userTv
.
setPlatform
(
userTvDTO
.
getPlatformAccount
());
userTv
.
setPriorityMemberCode
(
collect
.
get
(
0
).
getCode
());
userTvDTO
=
this
.
userTvService
.
doUpdatePriorityMemberCode
(
userTv
);
log
.
info
(
"大屏账号绑定新的主账号 ==>> userTvDTO ==>> {}"
,
userTvDTO
);
}
}
else
{
log
.
info
(
"无其他绑定的小屏会员信息 "
);
// 绑定新的主账号
UserTv
userTv
=
new
UserTv
();
userTv
.
setId
(
userTvDTO
.
getId
());
userTv
.
setPlatform
(
userTvDTO
.
getPlatformAccount
());
userTv
.
setPriorityMemberCode
(
null
);
userTvDTO
=
this
.
userTvService
.
doUpdatePriorityMemberCode
(
userTv
);
log
.
info
(
"大屏账号置空主会员的结果,userTvDTO ==>> {}"
,
userTvDTO
);
}
log
.
info
(
"同步绑定信息至大屏侧, 参数 ==>> {}"
,
new
MemberAndUserTvDTO
(
memberDTO
,
userTvDTO
));
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncUnbind
(
new
MemberAndUserTvDTO
(
memberDTO
,
userTvDTO
));
return
true
;
}
@Override
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/member/MemberOperationServiceImpl.java
View file @
f916b03
...
...
@@ -3,58 +3,53 @@ package com.topdraw.business.process.service.impl.member;
import
cn.hutool.core.util.ObjectUtil
;
import
com.topdraw.aspect.AsyncMqSend
;
import
com.topdraw.business.module.member.domain.Member
;
import
com.topdraw.business.module.member.profile.domain.MemberProfile
;
import
com.topdraw.business.module.member.profile.service.MemberProfileService
;
import
com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO
;
import
com.topdraw.business.module.member.service.MemberService
;
import
com.topdraw.business.module.member.service.dto.MemberDTO
;
import
com.topdraw.business.module.member.viphistory.domain.MemberVipHistory
;
import
com.topdraw.business.module.member.viphistory.service.MemberVipHistoryService
;
import
com.topdraw.business.module.task.domain.Task
;
import
com.topdraw.business.module.user.weixin.domain.UserWeixin
;
import
com.topdraw.business.module.user.weixin.service.UserWeixinService
;
import
com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO
;
import
com.topdraw.business.process.domian.weixin.BuyVipBean
;
import
com.topdraw.business.process.service.member.MemberOperationService
;
import
com.topdraw.
business.process.service.member.MemberProfileOperationService
;
import
com.topdraw.
config.RedisKeyConstants
;
import
com.topdraw.exception.EntityNotFoundException
;
import
com.topdraw.util.TimestampUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.aop.framework.AopContext
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.CachePut
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.Assert
;
import
java.sql.Timestamp
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.util.Objects
;
@Service
//@CacheConfig(cacheNames = "member")
@Slf4j
@CacheConfig
(
cacheNames
=
RedisKeyConstants
.
cacheMemberById
)
public
class
MemberOperationServiceImpl
implements
MemberOperationService
{
@Autowired
private
MemberService
memberService
;
@Autowired
private
UserWeixinService
userWeixinService
;
@Autowired
private
MemberProfileService
memberProfileService
;
@Autowired
private
MemberVipHistoryService
memberVipHistoryService
;
@Autowired
private
UserWeixinService
userWeixinService
;
@Autowired
private
ThreadPoolTaskExecutor
threadPoolTaskExecutor
;
@AsyncMqSend
public
void
asyncUpdateMemberVip
(
MemberDTO
me
)
{}
public
void
asyncUpdateMemberVip
(
MemberDTO
me
mberDTO
)
{}
// @CachePut(key = "#resources.memberId")
@Override
public
MemberDTO
buyVipByUserId
(
BuyVipBean
resources
)
{
// 小程序账户id
...
...
@@ -96,12 +91,12 @@ public class MemberOperationServiceImpl implements MemberOperationService {
}
memberDTO
.
setVip
(
vip1
);
memberDTO
.
setVipExpireTime
(
vipExpireTime
);
Member
member
=
new
Member
();
BeanUtils
.
copyProperties
(
memberDTO
,
member
);
this
.
update
(
member
);
member
.
setVip
(
vip1
);
member
.
setVipExpireTime
(
vipExpireTime
);
this
.
doUpdateMemberVipAndVipExpireTime
(
member
);
MemberVipHistory
memberVipHistory
=
new
MemberVipHistory
();
memberVipHistory
.
setMemberId
(
memberId
).
setVip
(
vip1
).
setBeforeVip
(
vip
);
...
...
@@ -148,7 +143,6 @@ public class MemberOperationServiceImpl implements MemberOperationService {
return
this
.
update
(
resources
);
}
// @CachePut(key = "#resources.id")
@Override
public
MemberDTO
doInsertMember
(
Member
resources
)
{
return
this
.
memberService
.
create
(
resources
);
...
...
@@ -160,34 +154,39 @@ public class MemberOperationServiceImpl implements MemberOperationService {
return
Objects
.
nonNull
(
memberId
)
?
memberDTO
:
null
;
}
// @CachePut(key = "#resources.id")
@Override
public
MemberDTO
doUpdateMemberExpAndLevel
(
Member
resources
)
{
return
this
.
memberService
.
doUpdateMemberExpAndLevel
(
resources
);
}
// @CachePut(key = "#resources.id")
@Override
public
MemberDTO
doUpdateMemberPoints
(
Member
resources
)
{
return
this
.
memberService
.
doUpdateMemberPoints
(
resources
);
}
// @CachePut(key = "#resources.id")
@Override
@CachePut
(
cacheNames
=
RedisKeyConstants
.
cacheMemberById
,
key
=
"#member.id"
)
public
MemberDTO
doUpdateMemberCoupon
(
Member
member
)
{
return
this
.
memberService
.
doUpdateMemberCoupon
(
member
);
}
@Override
public
MemberDTO
updateMemberVip
(
Member
member
)
{
// @CachePut(cacheNames = RedisKeyConstants.cacheMemberById, key = "#member.id")
public
MemberDTO
doUpdateMemberVipAndVipExpireTime
(
Member
member
)
{
MemberDTO
memberDTO1
=
this
.
memberService
.
findByCode
(
member
.
getCode
());
Member
member1
=
new
Member
();
BeanUtils
.
copyProperties
(
memberDTO1
,
member1
);
member1
.
setId
(
memberDTO1
.
getId
());
member1
.
setCode
(
memberDTO1
.
getCode
());
member1
.
setVip
(
member
.
getVip
());
member1
.
setVipExpireTime
(
member
.
getVipExpireTime
());
MemberDTO
memberDTO
=
this
.
update
(
member1
);
((
MemberOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncUpdateMemberVip
(
memberDTO
);
return
memberDTO
;
MemberDTO
memberDTO_
=
this
.
memberService
.
doUpdateMemberVipAndVipExpireTime
(
member1
);
((
MemberOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncUpdateMemberVip
(
memberDTO_
);
return
memberDTO_
;
}
@Override
...
...
@@ -225,11 +224,12 @@ public class MemberOperationServiceImpl implements MemberOperationService {
MemberDTO
memberDTO1
=
this
.
checkVipStatus
(
memberDTO
,
vipExpireTime
,
appid
);
// 更新会员信息
this
.
threadPoolTaskExecutor
.
execute
(()->{
Member
member
=
new
Member
();
BeanUtils
.
copyProperties
(
memberDTO1
,
member
);
this
.
update
(
member
);
});
member
.
setId
(
memberDTO1
.
getId
());
member
.
setCode
(
memberDTO1
.
getCode
());
member
.
setVip
(
memberDTO1
.
getVip
());
member
.
setVipExpireTime
(
memberDTO1
.
getVipExpireTime
());
this
.
doUpdateMemberVipAndVipExpireTime
(
member
);
vip
=
memberDTO1
.
getVip
();
Timestamp
vipExpireTime1
=
memberDTO1
.
getVipExpireTime
();
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/member/MemberProfileOperationServiceImpl.java
View file @
f916b03
...
...
@@ -111,12 +111,15 @@ public class MemberProfileOperationServiceImpl implements MemberProfileOperation
}
private
void
syncMember
(
MemberProfileDTO
memberProfileDTO
,
MemberDTO
memberDTO
)
{
memberDTO
.
setAvatarUrl
(
memberProfileDTO
.
getAvatarUrl
());
memberDTO
.
setNickname
(
memberProfileDTO
.
getRealname
());
memberDTO
.
setGender
(
memberProfileDTO
.
getGender
());
Member
member
=
new
Member
();
BeanUtils
.
copyProperties
(
memberDTO
,
member
);
this
.
memberService
.
update
(
member
);
member
.
setId
(
memberDTO
.
getId
());
member
.
setCode
(
memberDTO
.
getCode
());
member
.
setAvatarUrl
(
memberProfileDTO
.
getAvatarUrl
());
member
.
setNickname
(
memberProfileDTO
.
getRealname
());
member
.
setGender
(
memberProfileDTO
.
getGender
());
// this.memberService.update(member);
this
.
memberService
.
doUpdateMemberAvatarUrlAndNicknameAndGender
(
member
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/member/MemberOperationService.java
View file @
f916b03
...
...
@@ -90,5 +90,5 @@ public interface MemberOperationService {
*
* @param member
*/
MemberDTO
updateMemberVip
(
Member
member
);
MemberDTO
doUpdateMemberVipAndVipExpireTime
(
Member
member
);
}
...
...
member-service-impl/src/main/java/com/topdraw/config/LocalConstants.java
View file @
f916b03
...
...
@@ -28,4 +28,10 @@ public class LocalConstants {
// 事件类型 3:参加活动
public
static
final
Integer
EVT_TYPE_ACTIVITY
=
3
;
// 会员黑名单状态
public
static
final
Long
BLACK_STATUS
=
1L
;
}
...
...
member-service-impl/src/main/java/com/topdraw/config/ServiceEnvConfig.java
deleted
100644 → 0
View file @
31b1400
package
com
.
topdraw
.
config
;
import
cn.hutool.core.util.ObjectUtil
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
@Component
public
class
ServiceEnvConfig
{
// uc两侧部署,需配置位于哪一侧 mobile小屏侧 vis大屏侧
public
static
String
UC_SERVICE_TYPE
;
@Value
(
"${uc.service.type:mobile}"
)
public
void
setUcServiceType
(
String
ucServiceType
)
{
UC_SERVICE_TYPE
=
ucServiceType
;
}
public
static
boolean
isMobile
()
{
return
ObjectUtil
.
equals
(
UC_SERVICE_TYPE
,
LocalConstants
.
ENV_MOBILE
);
}
public
static
boolean
isVis
()
{
return
ObjectUtil
.
equals
(
UC_SERVICE_TYPE
,
LocalConstants
.
ENV_VIS
);
}
}
member-service-impl/src/main/java/com/topdraw/mq/module/mq/DataSyncMsg.java
View file @
f916b03
...
...
@@ -23,10 +23,9 @@ public class DataSyncMsg implements Serializable {
// 具体事件 行为事件类型 1:登录;2:观影;3:参与活动;4:订购;10:跨屏绑定;11:积分转移;30:积分兑换商品;98:系统操作;99:其他
private
Integer
event
;
//设备类型 1:大屏;2:小屏(微信)3.小屏(xx)
@NotNull
private
Integer
deviceType
;
// 发送时间
private
LocalDateTime
time
;
private
String
time
;
// 消息体
private
String
msgData
;
...
...
@@ -37,20 +36,32 @@ public class DataSyncMsg implements Serializable {
@AllArgsConstructor
@NoArgsConstructor
public
static
class
MsgData
{
private
String
remarks
;
//备注
@NotNull
private
Long
memberId
;
// 会员id
private
Long
userId
;
// 账户id
@NotNull
private
String
appCode
;
//用户对应的应用code
/**备注*/
private
String
remarks
;
// 会员id
private
Long
memberId
;
// 账户id
private
Long
userId
;
//用户对应的应用code
private
String
appCode
;
// 会员code
private
String
memberCode
;
private
Long
accountId
;
// 账号id
// 账号id
private
Long
accountId
;
// 订单Id
private
Long
orderId
;
// 活动id
private
Long
activityId
;
// 节目id
private
Long
mediaId
;
// 产品id
private
Long
itemId
;
// 模板参数
private
String
param
;
// 描述
private
String
description
;
// 大屏账号
private
String
platformAccount
;
}
}
...
...
member-service-impl/src/main/java/com/topdraw/mq/producer/MessageProducer.java
View file @
f916b03
package
com
.
topdraw
.
mq
.
producer
;
import
com.topdraw.business.process.service.impl.PointsOperationServiceImpl
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.AmqpTemplate
;
import
org.springframework.aop.framework.AopContext
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
...
...
@@ -57,4 +59,5 @@ public class MessageProducer {
amqpTemplate
.
convertAndSend
(
exchange
,
queue
,
msg
);
log
.
info
(
"send sendMessage msg || exchange: {} || queue: {} || msg:{} "
,
exchange
,
queue
,
msg
);
}
}
...
...
member-service-impl/src/main/resources/config/application-dev.yml
View file @
f916b03
...
...
@@ -143,3 +143,7 @@ weixin:
api
:
uc-service
:
http://127.0.0.1:8446
uc
:
# 主会员是否启用,如果启用任务获得的积分将添加至小屏会员上
validPriorityMember
:
0
\ No newline at end of file
...
...
member-service-impl/src/test/java/com/topdraw/test/business/process/rest/TaskOperationControllerTest.java
View file @
f916b03
...
...
@@ -179,6 +179,13 @@ public class TaskOperationControllerTest extends BaseTest {
this
.
taskOperationController
.
deleteTask
(
task
);
}
@Test
public
void
dealTask
()
{
String
content
=
"{\"deviceType\":1,\"event\":8,\"evt\":\"PLAY\",\"msgData\":\"{\\\"description\\\":\\\"{\\\\\\\"playDuration\\\\\\\":1,\\\\\\\"time\\\\\\\":\\\\\\\"2022-05-03 23:10:09\\\\\\\",\\\\\\\"mediaId\\\\\\\":432,\\\\\\\"mediaCode\\\\\\\":\\\\\\\"media_123\\\\\\\",\\\\\\\"mediaName\\\\\\\":\\\\\\\"白宫陷落\\\\\\\"}\\\",\\\"mediaId\\\":432,\\\"platformAccount\\\":\\\"6002110106@ITVP\\\",\\\"param\\\":\\\"{\\\\\\\"playDuration\\\\\\\":1}\\\"}\",\"time\":\"2022-06-17T13:07:16.433\"}\n"
;
TaskOperationQueryCriteria
task
=
new
TaskOperationQueryCriteria
();
task
.
setContent
(
content
);
this
.
taskOperationController
.
dealTask
(
task
);
}
}
...
...
Please
register
or
sign in
to post a comment