package com.cyksj.service.relation.impl; import cn.hutool.core.date.DateTime; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.cyksj.mapper.UserMapper; import com.cyksj.mapper.market.task.UserBindPhoneMapper; import com.cyksj.model.entity.User; import com.cyksj.model.entity.UserBindPhone; import com.cyksj.model.views.RenewalView; import com.cyksj.service.relation.GroupRelationFrontService; import com.ejlchina.searcher.BeanSearcher; import com.ejlchina.searcher.param.Operator; import com.ejlchina.searcher.util.MapUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /* *项目名: netflix *文件名: GroupRelationFrontServiceImpl *创建者: JavaZou *创建时间:2022/12/29 15:42 */ @Service @RequiredArgsConstructor @Slf4j public class GroupRelationFrontServiceImpl implements GroupRelationFrontService { private final UserBindPhoneMapper userBindPhoneMapper; private final UserMapper userMapper; private final BeanSearcher beanSearcher; @Override public List getMyTicket(long userId) { User u = userMapper.selectById(userId); Long otherUserId = getOtherUserId(u); List userIdList = new ArrayList<>(2); userIdList.add(u.getId()); if (otherUserId != null) { userIdList.add(otherUserId); } List list = beanSearcher.searchAll(RenewalView.class, MapUtils.builder() .field(RenewalView::getUserId, userIdList).op(Operator.InList) .field(RenewalView::getStatus, List.of("validity", "overdue")).op(Operator.InList) .orderBy(RenewalView::getExpiryTime).asc() .build()); //过滤邀请制、已失效的车位 DateTime now = DateTime.now(); List collect = list.stream().filter(ticket -> { if (ticket.getExpiryTime() != null && ticket.getExpiryTime().before(now)) { return false; } if (ticket.getSecondType() == 1) { ticket.setAccount(null); ticket.setPassword(null); } return true; }).collect(Collectors.toList()); return collect; } public Long getOtherUserId(User user) { Long userId = user.getId(); //是否是同一个用户 Boolean isPcUser = false; if (StrUtil.isNotBlank(user.getLoginPhone())) { isPcUser = true; } //是否绑定过手机号 LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(UserBindPhone.class).last("limit 1"); if (isPcUser) { wrapper.eq(UserBindPhone::getPhone, user.getLoginPhone()); } else { wrapper.eq(UserBindPhone::getUserId, userId); } UserBindPhone userBindPhone = userBindPhoneMapper.selectOne(wrapper); Long otherUserId = null; if (userBindPhone != null) { if (isPcUser) { otherUserId = userBindPhone.getUserId(); }else { User otherUser = userMapper.selectOne(Wrappers.lambdaQuery(User.class) .eq(User::getLoginPhone, userBindPhone.getPhone()).last("limit 1")); if (user != null) { otherUserId = otherUser.getId(); } } } return otherUserId; } }