Commit b3ece12e b3ece12e793334fc79c9a83e3fc22b9abc101f33 by xianghan

1.修改绑定、解绑实现

1 parent 091d65dd
......@@ -23,7 +23,6 @@ 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.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......@@ -63,7 +62,6 @@ public class MemberServiceImpl implements MemberService {
@Override
@Transactional(readOnly = true)
// @Cacheable(cacheNames = RedisKeyConstants.cacheMemberById, key = "#id")
public MemberDTO findById(Long id) {
Member member = this.memberRepository.findById(id).orElseGet(Member::new);
return this.memberMapper.toDto(member);
......@@ -140,7 +138,6 @@ public class MemberServiceImpl implements MemberService {
@Override
@Transactional(rollbackFor = Exception.class)
// @CachePut(cacheNames = RedisKeyConstants.cacheMemberByCode, key = "#resource.code")
public Integer doUpdateMemberCoupon(Member resource) {
return this.memberRepository.doUpdateMemberCoupon(resource);
}
......@@ -155,7 +152,6 @@ public class MemberServiceImpl implements MemberService {
@Override
@Transactional(rollbackFor = Exception.class)
@CachePut(cacheNames = RedisKeyConstants.cacheMemberByCode, key = "#resource.code")
public MemberDTO doUpdateMemberVipAndVipExpireTime(Member resource) {
log.info("修改会员vip和vip过期时间 ==>> {}", resource);
try {
......@@ -178,30 +174,20 @@ public class MemberServiceImpl implements MemberService {
@Override
@Transactional(rollbackFor = Exception.class)
@CachePut(cacheNames = RedisKeyConstants.cacheMemberByCode, key = "#resource.code")
public MemberDTO doUpdateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime(Member resource) {
log.info("修改会员绑定大屏信息 ==>> {}", resource);
try {
// this.redisUtils.doLock(RedisKeyConstants.updateCacheMemberById + resource.getId());
Integer count = this.memberRepository.updateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime(resource);
if (Objects.nonNull(count) && count > 0) {
log.info("修改会员绑定关系的结果, count ==>> {}", count);
if (count > 0) {
Member member = this.memberRepository.findById(resource.getId()).orElseGet(Member::new);
log.info("修改会员绑定关系成功,==>> {}", member);
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)
@CachePut(cacheNames = RedisKeyConstants.cacheMemberByCode, key = "#resource.code")
public MemberDTO doUpdateMemberAvatarUrlAndNicknameAndGender(Member resource) {
log.info("修改会员头像、昵称、性别 ==>> {}", resource);
try {
......@@ -248,7 +234,6 @@ public class MemberServiceImpl implements MemberService {
@Override
@Transactional(rollbackFor = Exception.class)
@CachePut(cacheNames = RedisKeyConstants.cacheMemberByCode, key = "#resources.code")
public MemberDTO update(Member resources) {
log.info("修改会员信息 ==>> {}", resources);
try {
......
......@@ -720,16 +720,39 @@ public class UserOperationServiceImpl implements UserOperationService {
log.info("会员信息置空大屏的结果,memberDTO ==>> {}", memberDTO);
memberDTO.setPlatformAccount(platformAccount);
// 置空主账号
userTvDTO = this.resetMainAccount(memberDTO, userTvDTO, bindMemberCode);
userTvDTO.setMemberCode(memberCode);
log.info("大屏账号置空主会员的结果,userTvDTO ==>> {}", userTvDTO);
((UserOperationServiceImpl)AopContext.currentProxy()).asyncUnbind(new MemberAndUserTvDTO(memberDTO, userTvDTO));
log.info("大屏解绑,重置大屏账号的主会员,查看当前会员是否是主账号 ==>>memberCode ==>> {} || 大屏账号 ==>> userTvDTO ==>> {}", userTvDTO);
if (StringUtils.isBlank(bindMemberCode)) {
UserTv userTv = new UserTv();
userTv.setId(userTvDTO.getId());
userTv.setPriorityMemberCode(null);
this.userTvService.doUpdatePriorityMemberCode(userTv);
UserTvDTO _userTvDTO = new UserTvDTO();
_userTvDTO.setPlatformAccount(platformAccount);
_userTvDTO.setPriorityMemberCode(null);
log.info("大屏账号置空主会员的结果,userTvDTO ==>> {}", _userTvDTO);
((UserOperationServiceImpl)AopContext.currentProxy()).asyncUnbind(new MemberAndUserTvDTO(memberDTO, _userTvDTO));
this.updateUserTvSimplePriorityMemberCodeRedis(platformAccount, "");
} else {
UserTv userTv = new UserTv();
userTv.setId(userTvDTO.getId());
userTv.setPriorityMemberCode(bindMemberCode);
// 绑定新的主账号
this.userTvService.doUpdatePriorityMemberCode(userTv);
UserTvDTO _userTvDTO = new UserTvDTO();
_userTvDTO.setPlatformAccount(platformAccount);
_userTvDTO.setPriorityMemberCode(bindMemberCode);
log.info("大屏账号置空主会员的结果,userTvDTO ==>> {}", userTvDTO);
((UserOperationServiceImpl)AopContext.currentProxy()).asyncUnbind(new MemberAndUserTvDTO(memberDTO, _userTvDTO));
this.updateUserTvSimplePriorityMemberCodeRedis(platformAccount, bindMemberCode);
}
return true;
}
......@@ -1111,79 +1134,6 @@ public class UserOperationServiceImpl implements UserOperationService {
return this.memberService.findById(memberId);
}
/**
* 重置主账号
* @param memberDTO 会员code
* @param userTvDTO 大屏id
* @param bindMemberCode true:自动设置主账号 false: 手动设置
*/
private UserTvDTO resetMainAccount(MemberDTO memberDTO, UserTvDTO userTvDTO, String bindMemberCode) {
log.info("大屏解绑,重置大屏账号的主会员,查看当前会员是否是主账号 ==>>memberCode ==>> {} || 大屏账号 ==>> userTvDTO ==>> {}", userTvDTO);
if (StringUtils.isBlank(bindMemberCode)) {
// 有其他绑定的小程序会员,排除自己
/*List<MemberDTO> memberDTOList = this.memberService.findByUserIptvId(id);
log.info("后台指定一个默认主会员,通过大屏id查询到的绑定的小屏会员memberDTOList ==>> {}", memberDTOList);
if (!CollectionUtils.isEmpty(memberDTOList)) {
Long memberId = userTvDTO.getMemberId();
MemberDTO memberDTO1 = this.memberService.findById(memberId);
List<MemberDTO> collect =
memberDTOList.stream().filter(memberDTO ->
!memberDTO.getCode().equalsIgnoreCase(memberCode) &&
!memberDTO.getCode().equalsIgnoreCase(memberDTO1.getCode())).collect(Collectors.toList());
log.info("过滤掉当前需要解绑的会员以及绑定的大屏会员之后剩余的会员列表 ==>> {}", memberDTOList);
if (!CollectionUtils.isEmpty(collect)) {
// 按绑定时间倒排
collect.sort(new Comparator<MemberDTO>() {
@Override
public int compare(MemberDTO memberDTO, MemberDTO t1) {
return t1.getBindIptvTime().compareTo(memberDTO.getBindIptvTime());
}
});
// 绑定新的主账号
UserTvDTO _userTvDTO = this.bondPriorityMember(userTvDTO, memberDTOList.get(0).getCode(), "manual");
log.info("绑定新的主账号 ==>> _userTvDTO ==>> {}", _userTvDTO);
return _userTvDTO;
}
} else {
log.info("无其他绑定的小屏会员信息 ");
// 绑定新的主账号
UserTvDTO _userTvDTO = this.bondPriorityMember(userTvDTO, null, "manual");
log.info("绑定新的主账号 ==>> _userTvDTO ==>> {}", _userTvDTO);
return _userTvDTO;
}*/
// 绑定新的主账号
// 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 {
UserTv userTv = new UserTv();
userTv.setId(userTvDTO.getId());
userTv.setPlatform(userTvDTO.getPlatformAccount());
userTv.setPriorityMemberCode(bindMemberCode);
// 绑定新的主账号
return this.userTvService.doUpdatePriorityMemberCode(userTv);
}
}
/**
*
......@@ -1339,11 +1289,6 @@ public class UserOperationServiceImpl implements UserOperationService {
return false;
}
return this.tvUnbindAndSetNewPriorityMemberCode(memberDTO, userTvDTO);
}
private boolean tvUnbindAndSetNewPriorityMemberCode(MemberDTO memberDTO, UserTvDTO userTvDTO) {
// 解绑(置空大屏信息)
Member member = new Member();
member.setId(memberDTO.getId());
......@@ -1352,9 +1297,8 @@ public class UserOperationServiceImpl implements UserOperationService {
member.setUserIptvId(null);
member.setBindIptvPlatformType(null);
log.info("置空会员绑定的大屏信息, member ==>> {}", member);
memberDTO = this.memberService.doUpdateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime(member);
this.memberService.doUpdateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime(member);
log.info("会员信息置空大屏的结果,memberDTO ==>> {}", memberDTO);
memberDTO.setPlatformAccount(userTvDTO.getPlatformAccount());
// 有其他绑定的小程序会员,排除自己
List<MemberDTO> memberDTOS = this.memberService.findByUserIptvId(userTvDTO.getId());
......@@ -1380,8 +1324,15 @@ public class UserOperationServiceImpl implements UserOperationService {
userTv.setId(userTvDTO.getId());
userTv.setPlatform(userTvDTO.getPlatformAccount());
userTv.setPriorityMemberCode(collect.get(0).getCode());
userTvDTO = this.userTvService.doUpdatePriorityMemberCode(userTv);
log.info("大屏账号绑定新的主账号 ==>> userTvDTO ==>> {}", userTvDTO);
this.userTvService.doUpdatePriorityMemberCode(userTv);
UserTvDTO _userTvDTO = new UserTvDTO();
_userTvDTO.setPlatformAccount(userTvDTO.getPlatformAccount());
_userTvDTO.setPriorityMemberCode(userTv.getPriorityMemberCode());
log.info("同步绑定信息至大屏侧, 参数 ==>> {}", new MemberAndUserTvDTO(memberDTO, _userTvDTO));
((UserOperationServiceImpl)AopContext.currentProxy()).asyncUnbind(new MemberAndUserTvDTO(memberDTO, _userTvDTO));
this.updateUserTvSimplePriorityMemberCodeRedis(userTvDTO.getPlatformAccount(), userTv.getPriorityMemberCode());
}
} else {
......@@ -1389,19 +1340,22 @@ public class UserOperationServiceImpl implements UserOperationService {
// 绑定新的主账号
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));
this.userTvService.doUpdatePriorityMemberCode(userTv);
UserTvDTO _userTvDTO = new UserTvDTO();
_userTvDTO.setPlatformAccount(userTvDTO.getPlatformAccount());
_userTvDTO.setPriorityMemberCode(null);
log.info("同步绑定信息至大屏侧, 参数 ==>> {}", new MemberAndUserTvDTO(memberDTO, _userTvDTO));
((UserOperationServiceImpl)AopContext.currentProxy()).asyncUnbind(new MemberAndUserTvDTO(memberDTO, _userTvDTO));
this.updateUserTvSimplePriorityMemberCodeRedis(userTvDTO.getPlatformAccount(), "");
}
return true;
}
@Override
public UserWeixinDTO findById(Long userId) {
return this.userWeixinService.findById(userId);
......