| | |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.LoginUserInfo; |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.YwCustomerMapper; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.model.YwCustomer; |
| | | import com.doumee.dao.system.dto.LoginPhoneDTO; |
| | | import com.doumee.service.business.YwCustomerH5AuthService; |
| | |
| | | |
| | | @Autowired |
| | | private YwCustomerMapper ywCustomerMapper; |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | @Autowired |
| | | private JwtTokenUtil jwtTokenUtil; |
| | | |
| | |
| | | return toLoginUserInfo(requireActiveCustomer(customerId)); |
| | | } |
| | | |
| | | @Override |
| | | public void assertActiveCustomerByPhone(String phone) { |
| | | findActiveByPhone(phone); |
| | | } |
| | | |
| | | private YwCustomer findActiveByPhone(String phone) { |
| | | if (StringUtils.isBlank(phone)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "手机号不能为空"); |
| | | } |
| | | YwCustomer customer = ywCustomerMapper.selectOne(new QueryWrapper<YwCustomer>().lambda() |
| | | .eq(YwCustomer::getIsdeleted, Constants.ZERO) |
| | | .eq(YwCustomer::getPhone, phone.trim()) |
| | | .last(" limit 1 ")); |
| | | YwCustomer customer = findCustomerByPhone(phone.trim()); |
| | | if (customer == null) { |
| | | throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(), "商户不存在或未注册"); |
| | | } |
| | | assertCustomerEnabled(customer); |
| | | return customer; |
| | | } |
| | | |
| | | /** |
| | | * 商户手机号:优先 yw_customer.phone,否则匹配联系人 member.phone |
| | | */ |
| | | private YwCustomer findCustomerByPhone(String phone) { |
| | | YwCustomer byCustomerPhone = ywCustomerMapper.selectOne(new QueryWrapper<YwCustomer>().lambda() |
| | | .eq(YwCustomer::getIsdeleted, Constants.ZERO) |
| | | .eq(YwCustomer::getPhone, phone) |
| | | .last(" limit 1 ")); |
| | | if (byCustomerPhone != null) { |
| | | return byCustomerPhone; |
| | | } |
| | | Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda() |
| | | .eq(Member::getIsdeleted, Constants.ZERO) |
| | | .eq(Member::getType, Constants.memberType.customer) |
| | | .eq(Member::getPhone, phone) |
| | | .isNotNull(Member::getCustomerId) |
| | | .orderByDesc(Member::getId) |
| | | .last(" limit 1 ")); |
| | | if (member == null || member.getCustomerId() == null) { |
| | | return null; |
| | | } |
| | | YwCustomer customer = ywCustomerMapper.selectOne(new QueryWrapper<YwCustomer>().lambda() |
| | | .eq(YwCustomer::getId, member.getCustomerId()) |
| | | .eq(YwCustomer::getIsdeleted, Constants.ZERO) |
| | | .last(" limit 1 ")); |
| | | if (customer != null) { |
| | | return customer; |
| | | } |
| | | return ywCustomerMapper.selectOne(new QueryWrapper<YwCustomer>().lambda() |
| | | .eq(YwCustomer::getIsdeleted, Constants.ZERO) |
| | | .eq(YwCustomer::getMemberId, member.getId()) |
| | | .last(" limit 1 ")); |
| | | } |
| | | |
| | | private YwCustomer requireActiveCustomer(Integer customerId) { |
| | |
| | | loginUserInfo.setId(customer.getId()); |
| | | loginUserInfo.setH5UserType(LoginUserInfo.H5_USER_CUSTOMER); |
| | | loginUserInfo.setRealname(customer.getName()); |
| | | loginUserInfo.setMobile(customer.getPhone()); |
| | | loginUserInfo.setMobile(resolveLoginMobile(customer)); |
| | | loginUserInfo.setUsername("customer_" + customer.getId()); |
| | | loginUserInfo.setSource(LoginUserInfo.SOURCE_H5_CUSTOMER); |
| | | loginUserInfo.setRoles(Collections.singletonList("h5_customer")); |
| | | loginUserInfo.setPermissions(Collections.emptyList()); |
| | | return loginUserInfo; |
| | | } |
| | | |
| | | private String resolveLoginMobile(YwCustomer customer) { |
| | | if (StringUtils.isNotBlank(customer.getPhone())) { |
| | | return customer.getPhone(); |
| | | } |
| | | if (customer.getMemberId() != null) { |
| | | Member member = memberMapper.selectById(customer.getMemberId()); |
| | | if (member != null && StringUtils.isNotBlank(member.getPhone())) { |
| | | return member.getPhone(); |
| | | } |
| | | } |
| | | return customer.getPhone(); |
| | | } |
| | | } |