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
f2560343
...
f2560343b026e49c5119c1d247d9d82ae8c12a84
authored
2022-03-18 00:00:37 +0800
by
xianghan@topdraw.cn
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1.接口优化,删除不必要的接口
1 parent
94e2d596
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
177 additions
and
326 deletions
member-service-impl/pom.xml
member-service-impl/src/main/java/com/topdraw/business/module/exp/detail/service/impl/ExpDetailServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/module/member/address/service/impl/MemberAddressServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/module/member/domain/Member.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/relatedinfo/service/impl/MemberRelatedInfoServiceImpl.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/module/points/available/service/impl/PointsAvailableServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/module/points/service/impl/PointsServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/module/rights/service/RightsService.java
member-service-impl/src/main/java/com/topdraw/business/module/rights/service/impl/RightsServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/rest/MemberOperationController.java
member-service-impl/src/main/java/com/topdraw/business/process/service/MemberOperationService.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/MemberOperationServiceImpl.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/UserOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/config/RedissonConfig.java
member-service-impl/src/main/java/com/topdraw/util/RedissonUtil.java
member-service-impl/pom.xml
View file @
f256034
...
...
@@ -20,13 +20,6 @@
<dependencies>
<!--redisson-->
<dependency>
<groupId>
org.redisson
</groupId>
<artifactId>
redisson
</artifactId>
<version>
3.16.3
</version>
</dependency>
<!--api-->
<dependency>
<groupId>
com.topdraw
</groupId>
...
...
member-service-impl/src/main/java/com/topdraw/business/module/exp/detail/service/impl/ExpDetailServiceImpl.java
View file @
f256034
...
...
@@ -2,13 +2,12 @@ package com.topdraw.business.module.exp.detail.service.impl;
import
com.topdraw.business.module.exp.detail.domain.ExpDetail
;
import
com.topdraw.business.module.exp.detail.domain.ExpDetailBuilder
;
import
com.topdraw.utils.RedisUtils
;
import
com.topdraw.utils.ValidationUtil
;
import
com.topdraw.business.module.exp.detail.repository.ExpDetailRepository
;
import
com.topdraw.business.module.exp.detail.service.ExpDetailService
;
import
com.topdraw.business.module.exp.detail.service.dto.ExpDetailDTO
;
import
com.topdraw.business.module.exp.detail.service.mapper.ExpDetailMapper
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
...
...
@@ -32,7 +31,7 @@ public class ExpDetailServiceImpl implements ExpDetailService {
private
ExpDetailMapper
expDetailMapper
;
@Autowired
private
Redis
sonClient
redissonClient
;
private
Redis
Utils
redisUtils
;
@Override
public
ExpDetailDTO
findById
(
Long
id
)
{
...
...
@@ -51,7 +50,7 @@ public class ExpDetailServiceImpl implements ExpDetailService {
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
update
(
ExpDetail
resources
)
{
RLock
rLock
=
this
.
redissonClient
.
getLock
(
resources
.
getId
().
toString
());
this
.
redisUtils
.
doLock
(
"expDetail::memberId::"
+
resources
.
getMemberId
());
try
{
ExpDetail
ExpDetail
=
this
.
expDetailRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
ExpDetail:
:
new
);
ValidationUtil
.
isNull
(
ExpDetail
.
getId
(),
"ExpDetail"
,
"id"
,
resources
.
getId
());
...
...
@@ -61,7 +60,7 @@ public class ExpDetailServiceImpl implements ExpDetailService {
e
.
printStackTrace
();
throw
e
;
}
finally
{
rLock
.
unlock
(
);
this
.
redisUtils
.
doUnLock
(
"expDetail::memberId::"
+
resources
.
getMemberId
()
);
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/address/service/impl/MemberAddressServiceImpl.java
View file @
f256034
...
...
@@ -4,15 +4,13 @@ import com.topdraw.business.module.member.address.domain.MemberAddress;
import
com.topdraw.business.module.member.address.domain.MemberAddressBuilder
;
import
com.topdraw.business.module.member.service.MemberService
;
import
com.topdraw.business.module.member.service.dto.MemberDTO
;
import
com.topdraw.util
.RedissonUtil
;
import
com.topdraw.util
s.RedisUtils
;
import
com.topdraw.utils.ValidationUtil
;
import
com.topdraw.business.module.member.address.repository.MemberAddressRepository
;
import
com.topdraw.business.module.member.address.service.MemberAddressService
;
import
com.topdraw.business.module.member.address.service.dto.MemberAddressDTO
;
import
com.topdraw.business.module.member.address.service.mapper.MemberAddressMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
...
...
@@ -37,7 +35,7 @@ public class MemberAddressServiceImpl implements MemberAddressService {
private
MemberAddressRepository
memberAddressRepository
;
@Autowired
private
Redis
sonClient
redissonClient
;
private
Redis
Utils
redisUtils
;
@Override
public
MemberAddressDTO
findById
(
Long
id
)
{
...
...
@@ -62,10 +60,10 @@ public class MemberAddressServiceImpl implements MemberAddressService {
public
void
update
(
MemberAddress
resources
)
{
log
.
info
(
"MemberAddressServiceImpl ==>> update ==>> param ==>> [{}]"
,
resources
);
Assert
.
notNull
(
resources
.
getId
(),
"id can't be null"
);
RLock
rLock
=
this
.
redissonClient
.
getLock
(
"MemberAddress::update::code"
+
resources
.
getId
());
//
RLock rLock = this.redissonClient.getLock("MemberAddress::update::code" + resources.getId());
try
{
RedissonUtil
.
lock
(
rLock
);
//
RedissonUtil.lock(rLock);
this
.
redisUtils
.
doLock
(
"MemberAddress::update::code"
+
resources
.
getId
());
MemberDTO
memberDTO
=
this
.
checkMember
(
resources
);
resources
.
setMemberCode
(
memberDTO
.
getCode
());
...
...
@@ -78,7 +76,8 @@ public class MemberAddressServiceImpl implements MemberAddressService {
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
// RedissonUtil.unlock(rLock);
this
.
redisUtils
.
doUnLock
(
"MemberAddress::update::code"
+
resources
.
getId
());
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/domain/Member.java
View file @
f256034
...
...
@@ -37,7 +37,7 @@ public class Member implements Serializable {
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"id"
)
@NotNull
(
message
=
"
code
can't be null!!"
,
groups
=
{
UpdateGroup
.
class
})
@NotNull
(
message
=
"
id
can't be null!!"
,
groups
=
{
UpdateGroup
.
class
})
private
Long
id
;
/** 标识 */
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/profile/service/impl/MemberProfileServiceImpl.java
View file @
f256034
...
...
@@ -6,7 +6,7 @@ import com.topdraw.business.module.member.profile.domain.MemberProfileBuilder;
import
com.topdraw.business.module.member.service.MemberService
;
import
com.topdraw.business.module.member.service.dto.MemberDTO
;
import
com.topdraw.util.Base64Util
;
import
com.topdraw.util
.RedissonUtil
;
import
com.topdraw.util
s.RedisUtils
;
import
com.topdraw.utils.StringUtils
;
import
com.topdraw.utils.ValidationUtil
;
import
com.topdraw.business.module.member.profile.repository.MemberProfileRepository
;
...
...
@@ -14,8 +14,6 @@ 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.profile.service.mapper.MemberProfileMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -37,12 +35,12 @@ public class MemberProfileServiceImpl implements MemberProfileService {
@Autowired
private
MemberService
memberService
;
@Autowired
private
RedissonClient
redissonClient
;
@Autowired
private
MemberProfileMapper
memberProfileMapper
;
@Autowired
private
MemberProfileRepository
memberProfileRepository
;
@Autowired
private
RedisUtils
redisUtils
;
@Override
public
MemberProfileDTO
findById
(
Long
id
)
{
...
...
@@ -112,10 +110,8 @@ public class MemberProfileServiceImpl implements MemberProfileService {
public
void
update
(
MemberProfile
resources
)
{
log
.
info
(
"MemberProfileServiceImpl ==>> update ==>> resources ===>> [{}]"
,
resources
);
RLock
rLock
=
this
.
redissonClient
.
get
Lock
(
"memberProfile::update::id"
+
resources
.
getId
());
this
.
redisUtils
.
do
Lock
(
"memberProfile::update::id"
+
resources
.
getId
());
try
{
RedissonUtil
.
lock
(
rLock
);
// 检查会员是否存在
this
.
checkMember
(
resources
);
// 真实姓名(加密)
...
...
@@ -133,7 +129,7 @@ public class MemberProfileServiceImpl implements MemberProfileService {
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
this
.
redisUtils
.
doUnLock
(
"memberProfile::update::id"
+
resources
.
getId
()
);
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/relatedinfo/service/impl/MemberRelatedInfoServiceImpl.java
View file @
f256034
...
...
@@ -8,15 +8,13 @@ import com.topdraw.business.module.member.service.dto.MemberDTO;
import
com.topdraw.exception.BadRequestException
;
import
com.topdraw.exception.GlobeExceptionMsg
;
import
com.topdraw.util.Base64Util
;
import
com.topdraw.util
.RedissonUtil
;
import
com.topdraw.util
s.RedisUtils
;
import
com.topdraw.utils.ValidationUtil
;
import
com.topdraw.business.module.member.relatedinfo.repository.MemberRelatedInfoRepository
;
import
com.topdraw.business.module.member.relatedinfo.service.MemberRelatedInfoService
;
import
com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoDTO
;
import
com.topdraw.business.module.member.relatedinfo.service.mapper.MemberRelatedInfoMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
...
...
@@ -44,7 +42,7 @@ public class MemberRelatedInfoServiceImpl implements MemberRelatedInfoService {
private
MemberRelatedInfoRepository
memberRelatedInfoRepository
;
@Autowired
private
Redis
sonClient
redissonClient
;
private
Redis
Utils
redisUtils
;
private
static
final
String
DEFAULT_IDCARD
=
"000000000000000000"
;
...
...
@@ -108,9 +106,8 @@ public class MemberRelatedInfoServiceImpl implements MemberRelatedInfoService {
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
update
(
MemberRelatedInfo
resources
)
{
log
.
info
(
"MemberRelatedInfoServiceImpl ==>> update ==>> param ==>> [{}]"
,
resources
);
RLock
rLock
=
this
.
redissonClient
.
get
Lock
(
"memberRelatedInfo::update::id"
+
resources
.
getId
());
this
.
redisUtils
.
do
Lock
(
"memberRelatedInfo::update::id"
+
resources
.
getId
());
try
{
RedissonUtil
.
lock
(
rLock
);
this
.
checkMemberAndEncodeRealname
(
resources
);
...
...
@@ -126,7 +123,7 @@ public class MemberRelatedInfoServiceImpl implements MemberRelatedInfoService {
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
this
.
redisUtils
.
doUnLock
(
"memberRelatedInfo::update::id"
+
resources
.
getId
()
);
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/rest/MemberController.java
View file @
f256034
package
com
.
topdraw
.
business
.
module
.
member
.
rest
;
import
com.topdraw.annotation.AnonymousAccess
;
import
com.topdraw.aop.log.Log
;
import
com.topdraw.business.module.common.validated.CreateGroup
;
import
com.topdraw.business.module.common.validated.UpdateGroup
;
import
com.topdraw.business.module.member.domain.Member
;
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.MemberOperationService
;
import
com.topdraw.business.process.service.UserOperationService
;
...
...
@@ -32,6 +34,7 @@ public class MemberController {
@Autowired
private
UserOperationService
userTvOperationService
;
@Log
(
"为大屏账户创建会员"
)
@RequestMapping
(
value
=
"/createMemberByUserTv"
)
@ApiOperation
(
"为大屏账户创建会员"
)
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/service/MemberService.java
View file @
f256034
...
...
@@ -11,6 +11,8 @@ import java.util.List;
*/
public
interface
MemberService
{
/**
* 根据ID查询
* @param id ID
...
...
@@ -30,26 +32,26 @@ public interface MemberService {
* @param resources
* @return Long id
*/
Long
create
(
Member
resources
);
MemberDTO
create
(
Member
resources
);
/**
* 创建并返回会员
* @param resources 会员
* @return Member
*/
Member
createAndReturnMember
(
Member
resources
);
Member
DTO
createAndReturnMember
(
Member
resources
);
/**
* 修改会员
* @param resources
*/
void
update
(
Member
resources
);
MemberDTO
update
(
Member
resources
);
/**
* 修改会员积分
* @param member 会员
*/
void
doUpdateMemberPoints
(
Member
member
);
MemberDTO
doUpdateMemberPoints
(
Member
member
);
/**
* 查询绑定了大屏会员列表
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/service/impl/MemberServiceImpl.java
View file @
f256034
...
...
@@ -9,14 +9,15 @@ import com.topdraw.business.module.member.service.dto.MemberDTO;
import
com.topdraw.business.module.member.service.mapper.MemberMapper
;
import
com.topdraw.exception.BadRequestException
;
import
com.topdraw.exception.GlobeExceptionMsg
;
import
com.topdraw.util
.RedissonUtil
;
import
com.topdraw.util
s.RedisUtils
;
import
com.topdraw.utils.ValidationUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
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
;
...
...
@@ -40,15 +41,15 @@ public class MemberServiceImpl implements MemberService {
private
MemberProfileService
memberProfileService
;
@Autowired
private
RedissonClient
redissonClient
;
private
RedisUtils
redisUtils
;
@Override
public
MemberDTO
findById
(
Long
id
)
{
Member
member
=
this
.
memberRepository
.
findById
(
id
).
orElseGet
(
Member:
:
new
);
ValidationUtil
.
isNull
(
member
.
getId
(),
"Member"
,
"id"
,
id
);
return
memberMapper
.
toDto
(
member
);
return
this
.
memberMapper
.
toDto
(
member
);
}
...
...
@@ -58,7 +59,7 @@ public class MemberServiceImpl implements MemberService {
Member
member
=
this
.
memberRepository
.
findFirstByCode
(
code
).
orElseGet
(
Member:
:
new
);
ValidationUtil
.
isNull
(
member
.
getId
(),
"Member"
,
"id"
,
code
);
return
memberMapper
.
toDto
(
member
);
return
this
.
memberMapper
.
toDto
(
member
);
}
...
...
@@ -67,7 +68,7 @@ public class MemberServiceImpl implements MemberService {
Member
member
=
this
.
memberRepository
.
findByIdOrCode
(
id
,
code
).
orElseGet
(
Member:
:
new
);
ValidationUtil
.
isNull
(
member
.
getId
(),
"Member"
,
"param"
,
code
);
return
memberMapper
.
toDto
(
member
);
return
this
.
memberMapper
.
toDto
(
member
);
}
...
...
@@ -76,7 +77,7 @@ public class MemberServiceImpl implements MemberService {
List
<
Member
>
memberList
=
this
.
memberRepository
.
findByUserIptvId
(
id
);
return
memberMapper
.
toDto
(
memberList
);
return
this
.
memberMapper
.
toDto
(
memberList
);
}
...
...
@@ -101,7 +102,7 @@ public class MemberServiceImpl implements MemberService {
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Long
create
(
Member
resources
)
{
public
MemberDTO
create
(
Member
resources
)
{
Member
member
=
MemberBuilder
.
build
(
resources
);
Long
memberId
=
this
.
save
(
member
);
...
...
@@ -110,28 +111,27 @@ public class MemberServiceImpl implements MemberService {
// 保存会员属性
this
.
memberProfileService
.
createDefault
(
member
);
return
member
.
getId
(
);
return
this
.
memberMapper
.
toDto
(
member
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Member
createAndReturnMember
(
Member
resources
)
{
public
Member
DTO
createAndReturnMember
(
Member
resources
)
{
this
.
create
(
MemberBuilder
.
build
(
resources
));
MemberDTO
memberDTO
=
this
.
create
(
MemberBuilder
.
build
(
resources
));
return
resources
;
return
memberDTO
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
update
(
Member
resources
)
{
public
MemberDTO
update
(
Member
resources
)
{
log
.
info
(
"MemberServiceImpl ==>> update ==>> resources ==>> [{}]"
,
resources
);
RLock
rLock
=
this
.
redissonClient
.
get
Lock
(
"member::update::code"
+
resources
.
getCode
());
this
.
redisUtils
.
do
Lock
(
"member::update::code"
+
resources
.
getCode
());
try
{
RedissonUtil
.
lock
(
rLock
);
MemberDTO
memberDTO
=
this
.
checkMember
(
resources
);
Member
member
=
new
Member
();
...
...
@@ -140,11 +140,13 @@ public class MemberServiceImpl implements MemberService {
this
.
save
(
member
);
return
this
.
memberMapper
.
toDto
(
member
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
this
.
redisUtils
.
doUnLock
(
"member::update::code"
+
resources
.
getCode
()
);
}
}
...
...
@@ -157,19 +159,23 @@ public class MemberServiceImpl implements MemberService {
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
doUpdateMemberPoints
(
Member
resources
)
{
RLock
rLock
=
this
.
redissonClient
.
getLock
(
"member::update::code"
+
resources
.
getId
().
toString
());
public
MemberDTO
doUpdateMemberPoints
(
Member
resources
)
{
try
{
RedissonUtil
.
lock
(
rLock
);
this
.
redisUtils
.
doLock
(
"member::update::code"
+
resources
.
getCode
());
Member
member
=
this
.
memberRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
Member:
:
new
);
ValidationUtil
.
isNull
(
member
.
getId
(),
"Member"
,
"id"
,
resources
.
getId
());
member
.
copy
(
resources
);
this
.
save
(
member
);
return
this
.
memberMapper
.
toDto
(
member
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
this
.
redisUtils
.
doUnLock
(
"member::update::code"
+
resources
.
getCode
()
);
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/points/available/service/impl/PointsAvailableServiceImpl.java
View file @
f256034
package
com
.
topdraw
.
business
.
module
.
points
.
available
.
service
.
impl
;
import
com.topdraw.aspect.AsyncMqSend
;
import
com.topdraw.business.module.points.available.domain.PointsAvailable
;
import
com.topdraw.util
.RedissonUtil
;
import
com.topdraw.util
s.RedisUtils
;
import
com.topdraw.utils.ValidationUtil
;
import
com.topdraw.business.module.points.available.repository.PointsAvailableRepository
;
import
com.topdraw.business.module.points.available.service.PointsAvailableService
;
import
com.topdraw.business.module.points.available.service.dto.PointsAvailableDTO
;
import
com.topdraw.business.module.points.available.service.dto.PointsAvailableQueryCriteria
;
import
com.topdraw.business.module.points.available.service.mapper.PointsAvailableMapper
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.beans.factory.annotation.Autowired
;
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.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.util.Assert
;
import
com.topdraw.utils.PageUtil
;
import
com.topdraw.utils.QueryHelp
;
import
com.topdraw.utils.StringUtils
;
import
java.time.LocalDateTime
;
...
...
@@ -41,7 +33,7 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
private
PointsAvailableMapper
PointsAvailableMapper
;
@Autowired
private
Redis
sonClient
redissonClient
;
private
Redis
Utils
redisUtils
;
@Override
public
List
<
PointsAvailableDTO
>
findByMemberIdOrderByExpireTime
(
Long
memberId
)
{
...
...
@@ -58,24 +50,22 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
create
(
PointsAvailable
resources
)
{
RLock
rLock
=
this
.
redissonClient
.
get
Lock
(
"PointsAvailable::create::id"
+
resources
.
getMemberId
().
toString
());
this
.
redisUtils
.
do
Lock
(
"PointsAvailable::create::id"
+
resources
.
getMemberId
().
toString
());
try
{
RedissonUtil
.
lock
(
rLock
);
PointsAvailableRepository
.
save
(
resources
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
this
.
redisUtils
.
doUnLock
(
"PointsAvailable::create::id"
+
resources
.
getMemberId
().
toString
()
);
}
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
update
(
PointsAvailable
resources
)
{
RLock
rLock
=
this
.
redissonClient
.
get
Lock
(
"PointsAvailable::update::id"
+
resources
.
getMemberId
().
toString
());
this
.
redisUtils
.
do
Lock
(
"PointsAvailable::update::id"
+
resources
.
getMemberId
().
toString
());
try
{
RedissonUtil
.
lock
(
rLock
);
PointsAvailable
PointsAvailable
=
PointsAvailableRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
PointsAvailable:
:
new
);
ValidationUtil
.
isNull
(
PointsAvailable
.
getId
(),
"PointsAvailable"
,
"id"
,
resources
.
getId
());
PointsAvailable
.
copy
(
resources
);
...
...
@@ -84,7 +74,7 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
this
.
redisUtils
.
doUnLock
(
"PointsAvailable::update::id"
+
resources
.
getMemberId
().
toString
()
);
}
}
...
...
@@ -92,9 +82,8 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
delete
(
Long
id
)
{
Assert
.
notNull
(
id
,
"The given id must not be null!"
);
RLock
rLock
=
this
.
redissonClient
.
get
Lock
(
"PointsAvailable::delete::id"
+
id
);
this
.
redisUtils
.
do
Lock
(
"PointsAvailable::delete::id"
+
id
);
try
{
RedissonUtil
.
lock
(
rLock
);
PointsAvailable
PointsAvailable
=
PointsAvailableRepository
.
findById
(
id
).
orElseThrow
(
()
->
new
EmptyResultDataAccessException
(
String
.
format
(
"No %s entity "
+
"with id %s "
+
"exists!"
,
PointsAvailable
.
class
,
id
),
1
));
PointsAvailableRepository
.
delete
(
PointsAvailable
);
...
...
@@ -102,22 +91,21 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
this
.
redisUtils
.
doLock
(
"PointsAvailable::delete::id"
+
id
);
}
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
deleteBatchByIds
(
List
<
Long
>
id
)
{
RLock
rLock
=
this
.
redissonClient
.
getLock
(
"PointsAvailable::create::id"
+
id
.
get
(
0
)
);
this
.
redisUtils
.
doLock
(
"PointsAvailable::create::id"
+
id
);
try
{
RedissonUtil
.
lock
(
rLock
);
PointsAvailableRepository
.
deleteBatchByIds
(
id
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
this
.
redisUtils
.
doUnLock
(
"PointsAvailable::create::id"
+
id
);
}
}
...
...
@@ -154,9 +142,8 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
@Override
public
void
delete4Custom
(
Long
id
)
{
Assert
.
notNull
(
id
,
"The given id must not be null!"
);
RLock
rLock
=
this
.
redissonClient
.
get
Lock
(
"PointsAvailable::delete::id"
+
id
);
this
.
redisUtils
.
do
Lock
(
"PointsAvailable::delete::id"
+
id
);
try
{
RedissonUtil
.
lock
(
rLock
);
PointsAvailable
PointsAvailable
=
PointsAvailableRepository
.
findById
(
id
).
orElseThrow
(
()
->
new
EmptyResultDataAccessException
(
String
.
format
(
"No %s entity "
+
"with id %s "
+
"exists!"
,
PointsAvailable
.
class
,
id
),
1
));
PointsAvailableRepository
.
delete
(
PointsAvailable
);
...
...
@@ -164,21 +151,20 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
this
.
redisUtils
.
doUnLock
(
"PointsAvailable::delete::id"
+
id
);
}
}
@Override
public
void
create4Custom
(
PointsAvailable
resources
)
{
RLock
rLock
=
this
.
redissonClient
.
get
Lock
(
"PointsAvailable::create::id"
+
resources
.
getMemberId
().
toString
());
this
.
redisUtils
.
do
Lock
(
"PointsAvailable::create::id"
+
resources
.
getMemberId
().
toString
());
try
{
RedissonUtil
.
lock
(
rLock
);
PointsAvailableRepository
.
save
(
resources
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
this
.
redisUtils
.
doUnLock
(
"PointsAvailable::create::id"
+
resources
.
getMemberId
().
toString
()
);
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/points/service/impl/PointsServiceImpl.java
View file @
f256034
package
com
.
topdraw
.
business
.
module
.
points
.
service
.
impl
;
import
com.topdraw.aspect.AsyncMqSend
;
import
com.topdraw.business.module.points.domain.Points
;
import
com.topdraw.util
.RedissonUtil
;
import
com.topdraw.util
s.RedisUtils
;
import
com.topdraw.utils.ValidationUtil
;
import
com.topdraw.business.module.points.repository.PointsRepository
;
import
com.topdraw.business.module.points.service.PointsService
;
import
com.topdraw.business.module.points.service.dto.PointsDTO
;
import
com.topdraw.business.module.points.service.dto.PointsQueryCriteria
;
import
com.topdraw.business.module.points.service.mapper.PointsMapper
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
...
...
@@ -42,7 +39,7 @@ public class PointsServiceImpl implements PointsService {
private
PointsMapper
PointsMapper
;
@Autowired
private
Redis
sonClient
redissonClient
;
private
Redis
Utils
redisUtils
;
@Override
public
Map
<
String
,
Object
>
queryAll
(
PointsQueryCriteria
criteria
,
Pageable
pageable
)
{
...
...
@@ -73,9 +70,8 @@ public class PointsServiceImpl implements PointsService {
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
update
(
Points
resources
)
{
RLock
rLock
=
this
.
redissonClient
.
getLock
(
resources
.
get
Id
().
toString
());
this
.
redisUtils
.
doLock
(
"Points::update::userId"
+
resources
.
getUser
Id
().
toString
());
try
{
RedissonUtil
.
lock
(
rLock
);
Points
Points
=
PointsRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
Points:
:
new
);
ValidationUtil
.
isNull
(
Points
.
getId
(),
"Points"
,
"id"
,
resources
.
getId
());
Points
.
copy
(
resources
);
...
...
@@ -84,7 +80,7 @@ public class PointsServiceImpl implements PointsService {
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
this
.
redisUtils
.
doUnLock
(
"Points::update::userId"
+
resources
.
getUserId
().
toString
()
);
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/rights/service/RightsService.java
View file @
f256034
package
com
.
topdraw
.
business
.
module
.
rights
.
service
;
import
com.topdraw.business.module.rights.domain.Rights
;
import
com.topdraw.business.module.rights.service.dto.RightsDTO
;
import
com.topdraw.business.module.rights.service.dto.RightsQueryCriteria
;
import
org.springframework.data.domain.Pageable
;
import
java.util.Map
;
import
java.util.List
;
/**
* @author XiangHan
...
...
@@ -14,21 +9,6 @@ import java.util.List;
public
interface
RightsService
{
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map
<
String
,
Object
>
queryAll
(
RightsQueryCriteria
criteria
,
Pageable
pageable
);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<RightsDTO>
*/
List
<
RightsDTO
>
queryAll
(
RightsQueryCriteria
criteria
);
/**
* 根据ID查询
* @param id ID
* @return RightsDTO
...
...
@@ -36,19 +16,6 @@ public interface RightsService {
RightsDTO
findById
(
Long
id
);
/**
* 批量查询
* @param ids
* @return
*/
List
<
RightsDTO
>
findBatchByIds
(
Long
...
ids
);
void
create
(
Rights
resources
);
void
update
(
Rights
resources
);
void
delete
(
Long
id
);
/**
* Code校验
* @param code
* @return RightsDTO
...
...
member-service-impl/src/main/java/com/topdraw/business/module/rights/service/impl/RightsServiceImpl.java
View file @
f256034
package
com
.
topdraw
.
business
.
module
.
rights
.
service
.
impl
;
import
com.topdraw.aspect.AsyncMqSend
;
import
com.topdraw.business.module.rights.domain.Rights
;
import
com.topdraw.utils.
ValidationUtil
;
import
com.topdraw.utils.
*
;
import
com.topdraw.business.module.rights.repository.RightsRepository
;
import
com.topdraw.business.module.rights.service.RightsService
;
import
com.topdraw.business.module.rights.service.dto.RightsDTO
;
import
com.topdraw.business.module.rights.service.dto.RightsQueryCriteria
;
import
com.topdraw.business.module.rights.service.mapper.RightsMapper
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.beans.factory.annotation.Autowired
;
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.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.util.Assert
;
import
com.topdraw.utils.PageUtil
;
import
com.topdraw.utils.QueryHelp
;
import
com.topdraw.utils.StringUtils
;
import
org.springframework.util.CollectionUtils
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author XiangHan
...
...
@@ -41,18 +26,7 @@ public class RightsServiceImpl implements RightsService {
private
RightsMapper
RightsMapper
;
@Autowired
private
RedissonClient
redissonClient
;
@Override
public
Map
<
String
,
Object
>
queryAll
(
RightsQueryCriteria
criteria
,
Pageable
pageable
)
{
Page
<
Rights
>
page
=
RightsRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
),
pageable
);
return
PageUtil
.
toPage
(
page
.
map
(
RightsMapper:
:
toDto
));
}
@Override
public
List
<
RightsDTO
>
queryAll
(
RightsQueryCriteria
criteria
)
{
return
RightsMapper
.
toDto
(
RightsRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
)));
}
private
RedisUtils
redisUtils
;
@Override
public
RightsDTO
findById
(
Long
id
)
{
...
...
@@ -62,45 +36,6 @@ public class RightsServiceImpl implements RightsService {
}
@Override
public
List
<
RightsDTO
>
findBatchByIds
(
Long
...
ids
)
{
List
<
Rights
>
rightsList
=
this
.
RightsRepository
.
findBatchByIds
(
ids
);
return
!
CollectionUtils
.
isEmpty
(
rightsList
)
?
RightsMapper
.
toDto
(
rightsList
)
:
null
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
create
(
Rights
resources
)
{
RightsRepository
.
save
(
resources
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
update
(
Rights
resources
)
{
RLock
rLock
=
this
.
redissonClient
.
getLock
(
resources
.
getId
().
toString
());
try
{
Rights
Rights
=
RightsRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
Rights:
:
new
);
ValidationUtil
.
isNull
(
Rights
.
getId
(),
"Rights"
,
"id"
,
resources
.
getId
());
Rights
.
copy
(
resources
);
RightsRepository
.
save
(
Rights
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
}
finally
{
rLock
.
unlock
();
}
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
delete
(
Long
id
)
{
Assert
.
notNull
(
id
,
"The given id must not be null!"
);
Rights
Rights
=
RightsRepository
.
findById
(
id
).
orElseThrow
(
()
->
new
EmptyResultDataAccessException
(
String
.
format
(
"No %s entity "
+
"with id %s "
+
"exists!"
,
Rights
.
class
,
id
),
1
));
RightsRepository
.
delete
(
Rights
);
}
@Override
public
RightsDTO
getByCode
(
String
code
)
{
return
StringUtils
.
isNotEmpty
(
code
)
?
RightsMapper
.
toDto
(
RightsRepository
.
findFirstByCode
(
code
).
orElseGet
(
Rights:
:
new
))
:
new
RightsDTO
();
...
...
member-service-impl/src/main/java/com/topdraw/business/process/rest/MemberOperationController.java
View file @
f256034
...
...
@@ -2,11 +2,16 @@ package com.topdraw.business.process.rest;
import
cn.hutool.core.util.ObjectUtil
;
import
com.topdraw.annotation.AnonymousAccess
;
import
com.topdraw.aop.log.Log
;
import
com.topdraw.business.module.common.validated.CreateGroup
;
import
com.topdraw.business.module.common.validated.UpdateGroup
;
import
com.topdraw.business.module.member.domain.Member
;
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.user.iptv.domain.UserTv
;
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
;
...
...
@@ -16,7 +21,9 @@ import com.topdraw.common.ResultInfo;
import
com.topdraw.exception.BadRequestException
;
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.*
;
import
java.time.LocalDateTime
;
...
...
@@ -25,6 +32,8 @@ import java.util.Objects;
@Api
(
"会员处理"
)
@RestController
@RequestMapping
(
value
=
"/ucEngine/api/memberOperation"
)
@CrossOrigin
@Slf4j
public
class
MemberOperationController
{
@Autowired
...
...
@@ -36,6 +45,31 @@ public class MemberOperationController {
@Autowired
private
MemberService
memberService
;
@Log
(
"查询会员"
)
@GetMapping
(
value
=
"/findById/{id}"
)
@ApiOperation
(
"查询会员"
)
@AnonymousAccess
public
ResultInfo
findById
(
@PathVariable
(
value
=
"id"
)
Long
id
)
{
log
.
info
(
"memberOperation ==>> findById ==>> param ==>> [{}]"
,
id
);
MemberDTO
memberDTO
=
this
.
memberOperationService
.
findById
(
id
);
log
.
info
(
"memberOperation ==>> findById ==>> result ==>> [{}]"
,
memberDTO
);
return
ResultInfo
.
success
(
memberDTO
);
}
@Log
(
"手动修改vip"
)
@RequestMapping
(
value
=
"/doUpdateVipByCode"
)
@ApiOperation
(
"手动修改vip"
)
@AnonymousAccess
public
ResultInfo
doUpdateVipByCode
(
@Validated
(
value
=
{
UpdateGroup
.
class
})
@RequestBody
Member
resources
)
{
log
.
info
(
"member ==>> doUpdateVipByCode ==>> param ==>> [{}]"
,
resources
);
MemberDTO
memberDTO
=
this
.
memberService
.
findByCode
(
resources
.
getCode
());
resources
.
setId
(
memberDTO
.
getId
());
this
.
memberOperationService
.
update
(
resources
);
log
.
info
(
"member ==>> doUpdateVipByCode ==>> result ==>> [{}]"
,
resources
);
return
ResultInfo
.
success
();
}
@GetMapping
(
"/getMemberProfileAndCheckVip/{appId}/{memberId}"
)
@ApiOperation
(
"获取会员基本信息并且检查vip状态"
)
@AnonymousAccess
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/MemberOperationService.java
View file @
f256034
...
...
@@ -11,13 +11,13 @@ public interface MemberOperationService {
*
* @param member
*/
void
doUpdateMemberInfo
(
Member
member
);
MemberDTO
doUpdateMemberInfo
(
Member
member
);
/**
*
* @param member
*/
void
doInsertMember
(
Member
member
);
MemberDTO
doInsertMember
(
Member
member
);
/**
*
...
...
@@ -30,19 +30,19 @@ public interface MemberOperationService {
*
* @param member
*/
void
doUpdateMemberExp
(
Member
member
);
MemberDTO
doUpdateMemberExp
(
Member
member
);
/**
*
* @param member
*/
void
doUpdateMemberPoints
(
Member
member
);
MemberDTO
doUpdateMemberPoints
(
Member
member
);
/**
*
* @param member
*/
void
doUpdateMemberCoupon
(
Member
member
);
MemberDTO
doUpdateMemberCoupon
(
Member
member
);
/**
*
...
...
@@ -63,5 +63,6 @@ public interface MemberOperationService {
* 修改会员
* @param resources
*/
void
update
(
Member
resources
);
MemberDTO
update
(
Member
resources
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/CouponOperationServiceImpl.java
View file @
f256034
...
...
@@ -11,10 +11,7 @@ import com.topdraw.business.process.service.CouponOperationService;
import
com.topdraw.business.process.service.MemberOperationService
;
import
com.topdraw.business.process.domian.TempCoupon
;
import
com.topdraw.business.process.service.RightsOperationService
;
import
com.topdraw.util.RedissonUtil
;
import
com.topdraw.util.TimestampUtil
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
com.topdraw.utils.RedisUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -22,7 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
org.springframework.stereotype.Service
;
import
java.sql.Timestamp
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
...
...
@@ -43,11 +39,13 @@ public class CouponOperationServiceImpl implements CouponOperationService {
RightsOperationService
rightsOperationService
;
@Autowired
MemberService
memberService
;
@Autowired
RedissonClient
redissonClient
;
@Autowired
ThreadPoolTaskExecutor
threadPoolTaskExecutor
;
@Autowired
private
RedisUtils
redisUtils
;
// 过期阀值(默认一个月)
private
static
final
Integer
EXPIRE_FACTOR_DAY
=
30
;
...
...
@@ -94,9 +92,8 @@ public class CouponOperationServiceImpl implements CouponOperationService {
// Long userId = tempCoupon.getUserId();
Long
memberId
=
tempCoupon
.
getMemberId
();
Integer
rightsAmount
=
tempCoupon
.
getRightsAmount
();
RLock
rLock
=
this
.
redissonClient
.
getLock
(
"refreshMemberCoupon:"
+
memberId
.
toString
());
try
{
RedissonUtil
.
lock
(
rLock
);
this
.
redisUtils
.
doLock
(
"refreshMemberCoupon:"
+
memberId
.
toString
()
);
// 1.历史总优惠券数量
Long
historyCouponCount
=
this
.
getTotalHistoryCoupon
(
memberId
);
// 1.当前总优惠券数量
...
...
@@ -113,7 +110,7 @@ public class CouponOperationServiceImpl implements CouponOperationService {
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
this
.
redisUtils
.
doUnLock
(
"refreshMemberCoupon:"
+
memberId
.
toString
()
);
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/ExpOperationServiceImpl.java
View file @
f256034
...
...
@@ -12,11 +12,8 @@ import com.topdraw.business.process.service.ExpOperationService;
import
com.topdraw.business.process.service.MemberOperationService
;
import
com.topdraw.business.process.domian.TempExp
;
import
com.topdraw.util.IdWorker
;
import
com.topdraw.util.RedissonUtil
;
import
com.topdraw.util.TimestampUtil
;
import
com.topdraw.utils.RedisUtils
;
import
com.topdraw.utils.StringUtils
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -45,11 +42,13 @@ public class ExpOperationServiceImpl implements ExpOperationService {
MemberLevelService
memberLevelService
;
@Autowired
MemberService
memberService
;
@Autowired
RedissonClient
redissonClient
;
@Autowired
ThreadPoolTaskExecutor
threadPoolTaskExecutor
;
@Autowired
private
RedisUtils
redisUtils
;
@Override
@AsyncMqSend
public
void
grantPointsThroughTempExp
(
List
<
TempExp
>
tempExpList
)
{
...
...
@@ -80,9 +79,8 @@ public class ExpOperationServiceImpl implements ExpOperationService {
* @param tempExp
*/
private
void
refresh
(
TempExp
tempExp
)
{
RLock
lock
=
this
.
redissonClient
.
getLock
(
"uc-refresh-exp:"
+
tempExp
.
getMemberId
());
try
{
RedissonUtil
.
lock
(
lock
);
this
.
redisUtils
.
doLock
(
"uc-refresh-exp:"
+
tempExp
.
getMemberId
()
);
// 原始积分
long
originExp
=
this
.
getExpByMemberId
(
tempExp
);
// 总积分
...
...
@@ -98,7 +96,7 @@ public class ExpOperationServiceImpl implements ExpOperationService {
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
lock
);
this
.
redisUtils
.
doUnLock
(
"uc-refresh-exp:"
+
tempExp
.
getMemberId
()
);
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/MemberOperationServiceImpl.java
View file @
f256034
...
...
@@ -16,6 +16,10 @@ import com.topdraw.business.process.service.MemberOperationService;
import
com.topdraw.exception.EntityNotFoundException
;
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
;
...
...
@@ -25,6 +29,7 @@ import java.time.ZoneOffset;
import
java.util.Objects
;
@Service
@CacheConfig
(
cacheNames
=
"member"
)
public
class
MemberOperationServiceImpl
implements
MemberOperationService
{
@Autowired
...
...
@@ -38,14 +43,15 @@ public class MemberOperationServiceImpl implements MemberOperationService {
@Autowired
private
ThreadPoolTaskExecutor
threadPoolTaskExecutor
;
@CachePut
(
key
=
"#resources.memberId"
)
@Override
public
MemberDTO
buyVip
(
BuyVipBean
criteria
)
{
public
MemberDTO
buyVip
(
BuyVipBean
resources
)
{
// 小程序账户id
Long
id
=
criteria
.
getId
();
Long
id
=
resources
.
getId
();
// 过期时间
LocalDateTime
vipExpireTime1
=
criteria
.
getVipExpireTime
();
Integer
vip1
=
criteria
.
getVip
();
LocalDateTime
vipExpireTime1
=
resources
.
getVipExpireTime
();
Integer
vip1
=
resources
.
getVip
();
// 查询微信账户
UserWeixinDTO
userWeixin
=
this
.
findWeiXinById
(
id
);
...
...
@@ -90,11 +96,14 @@ public class MemberOperationServiceImpl implements MemberOperationService {
return
memberDTO
;
}
@CachePut
(
key
=
"#resources.id"
)
@Override
public
void
update
(
Member
resources
)
{
this
.
memberService
.
update
(
resources
);
public
MemberDTO
update
(
Member
resources
)
{
MemberDTO
member
=
this
.
memberService
.
update
(
resources
);
return
member
;
}
private
UserWeixinDTO
findWeiXinById
(
Long
id
)
{
UserWeixinDTO
userWeixinDTO
=
this
.
userWeixinService
.
findById
(
id
);
if
(
Objects
.
isNull
(
userWeixinDTO
))
{
...
...
@@ -105,35 +114,40 @@ public class MemberOperationServiceImpl implements MemberOperationService {
}
@Override
public
void
doUpdateMemberInfo
(
Member
member
)
{
Long
id
=
member
.
getId
();
public
MemberDTO
doUpdateMemberInfo
(
Member
resources
)
{
Long
id
=
resources
.
getId
();
Assert
.
notNull
(
id
,
"ERROR MSG: MemberOperationServiceImpl -> doUpdateMemberInfo -> id not be null!!"
);
this
.
memberService
.
update
(
member
);
return
this
.
update
(
resources
);
}
@CachePut
(
key
=
"#resources.id"
)
@Override
public
void
doInsertMember
(
Member
member
)
{
this
.
memberService
.
create
(
member
);
public
MemberDTO
doInsertMember
(
Member
resources
)
{
return
this
.
memberService
.
create
(
resources
);
}
@Cacheable
(
key
=
"#memberId"
)
@Override
public
MemberDTO
findById
(
Long
memberId
)
{
return
Objects
.
nonNull
(
memberId
)
?
this
.
memberService
.
findById
(
memberId
)
:
null
;
MemberDTO
memberDTO
=
this
.
memberService
.
findById
(
memberId
);
return
Objects
.
nonNull
(
memberId
)
?
memberDTO
:
null
;
}
@Override
public
void
doUpdateMemberExp
(
Member
member
)
{
this
.
doUpdateMemberInfo
(
member
);
public
MemberDTO
doUpdateMemberExp
(
Member
member
)
{
return
this
.
update
(
member
);
}
@CachePut
(
key
=
"#resources.id"
)
@Override
public
void
doUpdateMemberPoints
(
Member
member
)
{
this
.
memberService
.
doUpdateMemberPoints
(
member
);
public
MemberDTO
doUpdateMemberPoints
(
Member
resources
)
{
return
this
.
memberService
.
doUpdateMemberPoints
(
resources
);
}
@Override
public
void
doUpdateMemberCoupon
(
Member
member
)
{
this
.
doUpdateMemberInfo
(
member
);
public
MemberDTO
doUpdateMemberCoupon
(
Member
member
)
{
return
this
.
update
(
member
);
}
@Override
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/PointsOperationServiceImpl.java
View file @
f256034
...
...
@@ -17,12 +17,10 @@ import com.topdraw.business.process.service.MemberOperationService;
import
com.topdraw.business.process.service.PointsOperationService
;
import
com.topdraw.business.process.domian.TempPoints
;
import
com.topdraw.util.IdWorker
;
import
com.topdraw.util.RedissonUtil
;
import
com.topdraw.util.TimestampUtil
;
import
com.topdraw.utils.RedisUtils
;
import
com.topdraw.utils.StringUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -60,16 +58,18 @@ public class PointsOperationServiceImpl implements PointsOperationService {
@Autowired
MemberService
memberService
;
@Autowired
private
RedisUtils
redisUtils
;
@Autowired
ThreadPoolTaskExecutor
threadPoolTaskExecutor
;
// 过期阈值 30天
private
static
final
Integer
EXPIRE_FACTOR
=
30
;
private
static
final
String
DELETE_AVAILABLE_POINTS
=
"delete"
;
private
static
final
String
INSERT_AVAILABLE_POINTS
=
"insert"
;
@Autowired
RedissonClient
redissonClient
;
@Autowired
ThreadPoolTaskExecutor
threadPoolTaskExecutor
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
@@ -104,9 +104,8 @@ public class PointsOperationServiceImpl implements PointsOperationService {
Long
memberId
=
tempPoints
.
getMemberId
();
RLock
rLock
=
this
.
redissonClient
.
getLock
(
"member::id::"
+
memberId
.
toString
());
try
{
RedissonUtil
.
lock
(
rLock
);
this
.
redisUtils
.
doLock
(
"member::id::"
+
memberId
.
toString
()
);
//1.删除过期的积分
this
.
cleanInvalidAvailablePointsByMemberId
(
memberId
);
// 1.判断可用积分是否够用
...
...
@@ -139,7 +138,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
this
.
redisUtils
.
doUnLock
(
"member::id::"
+
memberId
.
toString
()
);
}
return
customPointsResult
;
...
...
@@ -414,11 +413,8 @@ public class PointsOperationServiceImpl implements PointsOperationService {
private
void
refresh
(
TempPoints
tempPoints
)
{
Long
memberId
=
tempPoints
.
getMemberId
();
log
.
info
(
"----------->> 会员id ===>>>>"
+
memberId
);
RLock
rLock
=
this
.
redissonClient
.
getLock
(
"member::id::"
+
memberId
.
toString
());
log
.
info
(
"----------->> rLock --->> start"
);
try
{
RedissonUtil
.
lock
(
rLock
);
this
.
redisUtils
.
doLock
(
"member::id::"
+
memberId
.
toString
());
// 1.可用总积分
Long
currentPoints
=
this
.
findAvailablePointsByMemberId
(
memberId
);
log
.
info
(
"----------->> 可用总积分 --->>>> "
+
currentPoints
);
...
...
@@ -447,7 +443,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
e
.
printStackTrace
();
throw
e
;
}
finally
{
RedissonUtil
.
unlock
(
rLock
);
this
.
redisUtils
.
doUnLock
(
"member::id::"
+
memberId
.
toString
()
);
}
}
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/UserOperationServiceImpl.java
View file @
f256034
...
...
@@ -1063,7 +1063,7 @@ public class UserOperationServiceImpl implements UserOperationService {
* @return
*/
private
Long
createMember
(
Member
member
){
return
this
.
memberService
.
create
(
member
);
return
this
.
memberService
.
create
(
member
)
.
getId
()
;
}
/**
...
...
member-service-impl/src/main/java/com/topdraw/config/RedissonConfig.java
deleted
100644 → 0
View file @
94e2d59
package
com
.
topdraw
.
config
;
import
com.topdraw.utils.StringUtils
;
import
org.redisson.Redisson
;
import
org.redisson.api.RedissonClient
;
import
org.redisson.config.Config
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
public
class
RedissonConfig
{
// @Value("122.112.214.149")
@Value
(
"${spring.redis.host}"
)
private
String
redisHost
;
@Value
(
"${spring.redis.port}"
)
private
String
port
;
@Value
(
"${spring.redis.password}"
)
private
String
password
;
@Bean
public
Redisson
redisson
(){
Config
config
=
new
Config
();
if
(
StringUtils
.
isNotEmpty
(
password
))
{
config
.
useSingleServer
().
setAddress
(
"redis://"
+
redisHost
+
":"
+
port
).
setPassword
(
password
);
}
else
{
config
.
useSingleServer
().
setAddress
(
"redis://"
+
redisHost
+
":"
+
port
);
}
/* config.useClusterServers().addNodeAddress(
"redis://172.29.3.245:6375","redis://172.29.3.245:6376", "redis://172.29.3.245:6377",
"redis://172.29.3.245:6378","redis://172.29.3.245:6i379", "redis://172.29.3.245:6380")
.setPassword("a123456").setScanInterval(5000);*/
Redisson
redissonClient
=
(
Redisson
)
Redisson
.
create
(
config
);
return
redissonClient
;
}
}
member-service-impl/src/main/java/com/topdraw/util/RedissonUtil.java
deleted
100644 → 0
View file @
94e2d59
package
com
.
topdraw
.
util
;
import
org.redisson.api.RLock
;
public
class
RedissonUtil
{
public
static
void
lock
(
RLock
rLock
){
rLock
.
lock
();
}
public
static
void
unlock
(
RLock
rLock
){
if
(
rLock
.
isLocked
()
&&
rLock
.
isHeldByCurrentThread
())
rLock
.
unlock
();
}
/**
* 保存数据
* @param key 键
* @param value 值
* @param validTime 过期时间
*/
public
static
void
doSave
(
String
key
,
String
value
,
Integer
validTime
){
}
}
Please
register
or
sign in
to post a comment