UserBindRelationServiceImpl.java 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. if (userId == null) throw BusinessRuntimeException.getGatewayApiCode(GatewayApiCode.CMS_TOKEN_VALID);
  30. List<Long> userIds = new ArrayList<>();
  31. User user = Optional.ofNullable(selectUser).orElse(userMapper.selectById(userId));
  32. if (user == null) throw BusinessRuntimeException.getGatewayApiCode(GatewayApiCode.CMS_TOKEN_VALID);
  33. UserBindDetail userBindDetail;
  34. //微信用户
  35. if (StrUtil.isNotBlank(user.getUnionid()) || StrUtil.isNotEmpty(user.getOpenId())) {
  36. userIds.add(userId);
  37. userBindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
  38. .eq(UserBindDetail::getUserId, userId).last("limit 1"));
  39. if (userBindDetail == null) {
  40. return userIds;
  41. }
  42. if (userBindDetail.getPhoneUserId() != null) {
  43. userIds.add(userBindDetail.getPhoneUserId());
  44. }
  45. if (userBindDetail.getEmailUserId() != null) {
  46. userIds.add(userBindDetail.getEmailUserId());
  47. }
  48. return userIds;
  49. }
  50. Long phoneUserId = null;
  51. Long emailUserId = null;
  52. if (StrUtil.isNotBlank(user.getLoginPhone())) {
  53. phoneUserId = user.getId();
  54. }
  55. if (StrUtil.isNotBlank(user.getEmail())) {
  56. emailUserId = user.getId();
  57. }
  58. //非微信用户
  59. userBindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
  60. .eq(phoneUserId != null, UserBindDetail::getPhoneUserId, phoneUserId)
  61. .eq(emailUserId != null, UserBindDetail::getEmailUserId, emailUserId)
  62. .last("limit 1"));
  63. if (userBindDetail == null) {
  64. userIds.add(userId);
  65. return userIds;
  66. }
  67. phoneUserId = userBindDetail.getPhoneUserId();
  68. emailUserId = userBindDetail.getEmailUserId();
  69. Long wxUserId = userBindDetail.getUserId();
  70. if (wxUserId != null) {
  71. userIds.add(wxUserId);
  72. }
  73. if (phoneUserId != null) {
  74. userIds.add(phoneUserId);
  75. }
  76. if (emailUserId != null) {
  77. userIds.add(emailUserId);
  78. }
  79. return userIds;
  80. }
  81. }