From ea689dd91eaa72425dc01759042c3b4eb2186512 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期三, 17 六月 2026 10:14:44 +0800
Subject: [PATCH] 新增智能电表、空调管理
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerH5AuthServiceImpl.java | 63 +++++++++++++++++++++++++++++--
1 files changed, 58 insertions(+), 5 deletions(-)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerH5AuthServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerH5AuthServiceImpl.java
index 37fcf42..59d02f7 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerH5AuthServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerH5AuthServiceImpl.java
@@ -7,7 +7,9 @@
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;
@@ -24,6 +26,8 @@
@Autowired
private YwCustomerMapper ywCustomerMapper;
+ @Autowired
+ private MemberMapper memberMapper;
@Autowired
private JwtTokenUtil jwtTokenUtil;
@@ -67,19 +71,55 @@
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) {
@@ -125,11 +165,24 @@
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();
+ }
}
--
Gitblit v1.9.3