UserBindRelationServiceImpl.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package com.cyksj.service.user.impl;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.cyksj.common.exception.BusinessRuntimeException;
  5. import com.cyksj.enums.GatewayApiCode;
  6. import com.cyksj.mapper.UserMapper;
  7. import com.cyksj.mapper.market.task.UserBindDetailMapper;
  8. import com.cyksj.model.entity.User;
  9. import com.cyksj.model.entity.UserBindDetail;
  10. import com.cyksj.service.user.UserBindRelationService;
  11. import lombok.RequiredArgsConstructor;
  12. import org.springframework.stereotype.Service;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. import java.util.Optional;
  16. /*
  17. *项目名: netflix
  18. *文件名: UserBindRelationServiceImpl
  19. *创建者: JavaZou
  20. *创建时间:2023/8/1 15:03
  21. */
  22. @Service
  23. @RequiredArgsConstructor
  24. public class UserBindRelationServiceImpl implements UserBindRelationService {
  25. private final UserBindDetailMapper userBindDetailMapper;
  26. private final UserMapper userMapper;
  27. @Override
  28. public List<Long> getRelationUserIdList(Long userId, User selectUser) {
  29. List<Long> userIds = new ArrayList<>();
  30. User user = Optional.ofNullable(selectUser).orElse(userMapper.selectById(userId));
  31. if (user == null) throw BusinessRuntimeException.getGatewayApiCode(GatewayApiCode.CMS_TOKEN_VALID);
  32. UserBindDetail userBindDetail;
  33. //微信用户
  34. if (StrUtil.isNotBlank(user.getUnionid()) || StrUtil.isNotEmpty(user.getOpenId())) {
  35. userIds.add(userId);
  36. userBindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
  37. .eq(UserBindDetail::getUserId, userId).last("limit 1"));
  38. if (userBindDetail == null) {
  39. return userIds;
  40. }
  41. if (userBindDetail.getPhoneUserId() != null) {
  42. userIds.add(userBindDetail.getPhoneUserId());
  43. }
  44. if (userBindDetail.getEmailUserId() != null) {
  45. userIds.add(userBindDetail.getEmailUserId());
  46. }
  47. return userIds;
  48. }
  49. Long phoneUserId = null;
  50. Long emailUserId = null;
  51. if (StrUtil.isNotBlank(user.getLoginPhone())) {
  52. phoneUserId = user.getId();
  53. }
  54. if (StrUtil.isNotBlank(user.getEmail())) {
  55. emailUserId = user.getId();
  56. }
  57. //非微信用户
  58. userBindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
  59. .eq(phoneUserId != null, UserBindDetail::getPhoneUserId, phoneUserId)
  60. .eq(emailUserId != null, UserBindDetail::getEmailUserId, emailUserId)
  61. .last("limit 1"));
  62. if (userBindDetail == null) {
  63. userIds.add(userId);
  64. return userIds;
  65. }
  66. phoneUserId = userBindDetail.getPhoneUserId();
  67. emailUserId = userBindDetail.getEmailUserId();
  68. Long wxUserId = userBindDetail.getUserId();
  69. if (wxUserId != null) {
  70. userIds.add(wxUserId);
  71. }
  72. if (phoneUserId != null) {
  73. userIds.add(phoneUserId);
  74. }
  75. if (emailUserId != null) {
  76. userIds.add(emailUserId);
  77. }
  78. return userIds;
  79. }
  80. }