|
|
@@ -6,18 +6,10 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import shop.alien.entity.result.R;
|
|
|
import shop.alien.entity.store.LifeUser;
|
|
|
-import shop.alien.entity.store.StoreInfo;
|
|
|
-import shop.alien.entity.store.StoreUser;
|
|
|
import shop.alien.mapper.LifeUserMapper;
|
|
|
-import shop.alien.mapper.StoreInfoMapper;
|
|
|
-import shop.alien.mapper.StoreUserMapper;
|
|
|
import shop.alien.storeplatform.service.MerchantAuthService;
|
|
|
import shop.alien.storeplatform.util.AliApiUtil;
|
|
|
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-
|
|
|
/**
|
|
|
* web端商户身份验证服务实现类
|
|
|
*
|
|
|
@@ -33,52 +25,22 @@ public class MerchantAuthServiceImpl implements MerchantAuthService {
|
|
|
|
|
|
private final LifeUserMapper lifeUserMapper;
|
|
|
|
|
|
- private final StoreUserMapper storeUserMapper;
|
|
|
-
|
|
|
- private final StoreInfoMapper storeInfoMapper;
|
|
|
-
|
|
|
@Override
|
|
|
public R<String> verifyIdInfo(String name, String idCard, Integer appType) {
|
|
|
log.info("MerchantAuthServiceImpl.verifyIdInfo?name={}&idCard={}&appType={}", name, idCard, appType);
|
|
|
|
|
|
- // 根据端类型查询是否已实名认证
|
|
|
- int size = 0;
|
|
|
+ // 根据端类型查询是否已实名认证(仅用户端限制一证一号;商家端允许多个商户账号使用同一身份证)
|
|
|
if (appType == 0) {
|
|
|
- // 用户端:查询未注销的用户
|
|
|
+ // 用户端:查询未注销的用户,同一身份证只能实名一个用户账号
|
|
|
LambdaQueryWrapper<LifeUser> userWrapper = new LambdaQueryWrapper<>();
|
|
|
userWrapper.eq(LifeUser::getIdCard, idCard)
|
|
|
.eq(LifeUser::getRealName, name)
|
|
|
.eq(LifeUser::getLogoutFlag, 0); // 只查询未注销的用户
|
|
|
- size = lifeUserMapper.selectCount(userWrapper);
|
|
|
- } else {
|
|
|
- // 商家端:查询已入驻或审核中的商家(排除已注销和审核失败的店铺)
|
|
|
- // 1. 先根据身份证和姓名查询商户用户(排除已注销的用户)
|
|
|
- LambdaQueryWrapper<StoreUser> storeUserWrapper = new LambdaQueryWrapper<>();
|
|
|
- storeUserWrapper.eq(StoreUser::getIdCard, idCard)
|
|
|
- .eq(StoreUser::getName, name)
|
|
|
- .eq(StoreUser::getLogoutFlag, 0); // 排除已注销的商户用户
|
|
|
- List<StoreUser> storeUserList = storeUserMapper.selectList(storeUserWrapper);
|
|
|
-
|
|
|
- // 2. 获取这些商户用户绑定的店铺ID
|
|
|
- List<Integer> storeIds = storeUserList.stream()
|
|
|
- .map(StoreUser::getStoreId)
|
|
|
- .filter(Objects::nonNull) // 过滤掉空的店铺ID
|
|
|
- .collect(Collectors.toList());
|
|
|
-
|
|
|
- // 3. 如果有店铺ID,查询非审核失败且非注销状态的店铺
|
|
|
- if (!storeIds.isEmpty()) {
|
|
|
- LambdaQueryWrapper<StoreInfo> storeInfoWrapper = new LambdaQueryWrapper<>();
|
|
|
- storeInfoWrapper.in(StoreInfo::getId, storeIds)
|
|
|
- .notIn(StoreInfo::getStoreApplicationStatus, 2) // 排除审核失败的店铺(状态2)
|
|
|
- .eq(StoreInfo::getLogoutFlag, 0) // 排除已注销的店铺(logoutFlag=0表示未注销)
|
|
|
- .ne(StoreInfo::getStoreStatus, -1); // 排除注销中状态的店铺(storeStatus=-1表示注销中)
|
|
|
- size = storeInfoMapper.selectCount(storeInfoWrapper);
|
|
|
+ if (lifeUserMapper.selectCount(userWrapper) > 0) {
|
|
|
+ return R.fail("该身份证已实名认证过");
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- if (size > 0) {
|
|
|
- return R.fail("该身份证已实名认证过");
|
|
|
- }
|
|
|
+ // 商家端(appType=1):不校验身份证是否已被其他商户使用,允许多个商户账号使用同一身份证,仅做支付宝二要素核验
|
|
|
|
|
|
// 调用支付宝身份验证接口
|
|
|
if (aliApiUtil.verifyIdCard(name, idCard)) {
|