|
|
@@ -1518,7 +1518,7 @@ public class StoreInfoController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @ApiOperation("分页随机查询店铺(排除已删除和已拉黑的店铺)")
|
|
|
+ @ApiOperation("分页随机查询店铺(排除已删除、已拉黑和已关注的店铺)")
|
|
|
@ApiOperationSupport(order = 100)
|
|
|
@ApiImplicitParams({
|
|
|
@ApiImplicitParam(
|
|
|
@@ -1575,13 +1575,69 @@ public class StoreInfoController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 查询当前登录用户已关注的店铺ID(仅普通用户)
|
|
|
+ List<Integer> followedStoreIds = new ArrayList<>();
|
|
|
+ if (userLoginInfo != null && userLoginInfo.getUserId() > 0 && "user".equals(userLoginInfo.getType())) {
|
|
|
+ try {
|
|
|
+ // 查询用户信息获取手机号
|
|
|
+ Integer userId = userLoginInfo.getUserId();
|
|
|
+ LifeUser lifeUser = lifeUserMapper.selectById(userId);
|
|
|
+
|
|
|
+ if (lifeUser != null && StringUtils.isNotEmpty(lifeUser.getUserPhone())) {
|
|
|
+ // 构造粉丝ID:fans_id = "user_" + 用户手机号
|
|
|
+ String fansId = "user_" + lifeUser.getUserPhone();
|
|
|
+
|
|
|
+ // 查询该用户关注的所有门店(followed_id 以 "store_" 开头)
|
|
|
+ LambdaQueryWrapper<LifeFans> fansWrapper = new LambdaQueryWrapper<>();
|
|
|
+ fansWrapper.eq(LifeFans::getFansId, fansId)
|
|
|
+ .likeRight(LifeFans::getFollowedId, "store_")
|
|
|
+ .eq(LifeFans::getDeleteFlag, 0);
|
|
|
+ List<LifeFans> lifeFansList = lifeFansMapper.selectList(fansWrapper);
|
|
|
+
|
|
|
+ if (!CollectionUtils.isEmpty(lifeFansList)) {
|
|
|
+ // 从 followed_id 中提取门店手机号(去掉 "store_" 前缀)
|
|
|
+ Set<String> storePhones = new HashSet<>();
|
|
|
+ for (LifeFans fans : lifeFansList) {
|
|
|
+ if (fans.getFollowedId() != null && fans.getFollowedId().startsWith("store_")) {
|
|
|
+ String storePhone = fans.getFollowedId().substring(6); // 去掉 "store_" 前缀
|
|
|
+ if (StringUtils.isNotEmpty(storePhone)) {
|
|
|
+ storePhones.add(storePhone);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 通过门店手机号查询门店ID
|
|
|
+ if (!storePhones.isEmpty()) {
|
|
|
+ LambdaQueryWrapper<StoreInfo> storeWrapper = new LambdaQueryWrapper<>();
|
|
|
+ storeWrapper.in(StoreInfo::getStoreTel, storePhones)
|
|
|
+ .eq(StoreInfo::getDeleteFlag, 0);
|
|
|
+ List<StoreInfo> followedStores = storeInfoMapper.selectList(storeWrapper);
|
|
|
+
|
|
|
+ for (StoreInfo store : followedStores) {
|
|
|
+ if (store.getId() != null) {
|
|
|
+ followedStoreIds.add(store.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("查询用户已关注门店失败 - userId: {}, error: {}",
|
|
|
+ userLoginInfo.getUserId(), e.getMessage(), e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 合并拉黑和已关注的店铺ID列表
|
|
|
+ Set<Integer> excludedStoreIds = new HashSet<>(blacklistedStoreIds);
|
|
|
+ excludedStoreIds.addAll(followedStoreIds);
|
|
|
+
|
|
|
// 构建查询条件
|
|
|
LambdaQueryWrapper<StoreInfo> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(StoreInfo::getDeleteFlag, 0); // 未删除
|
|
|
|
|
|
- // 排除被拉黑的店铺
|
|
|
- if (!blacklistedStoreIds.isEmpty()) {
|
|
|
- queryWrapper.notIn(StoreInfo::getId, blacklistedStoreIds);
|
|
|
+ // 排除被拉黑和已关注的店铺
|
|
|
+ if (!excludedStoreIds.isEmpty()) {
|
|
|
+ queryWrapper.notIn(StoreInfo::getId, excludedStoreIds);
|
|
|
}
|
|
|
|
|
|
// 随机排序
|
|
|
@@ -1642,23 +1698,23 @@ public class StoreInfoController {
|
|
|
// userId是用户ID(数字),查询用户信息获取手机号
|
|
|
Integer userId = userLoginInfo.getUserId();
|
|
|
LifeUser lifeUser = lifeUserMapper.selectById(userId);
|
|
|
-
|
|
|
+
|
|
|
// 获取门店手机号
|
|
|
String storePhone = storePhoneMap.get(store.getId());
|
|
|
-
|
|
|
- if (lifeUser != null && StringUtils.isNotEmpty(lifeUser.getUserPhone())
|
|
|
+
|
|
|
+ if (lifeUser != null && StringUtils.isNotEmpty(lifeUser.getUserPhone())
|
|
|
&& StringUtils.isNotEmpty(storePhone)) {
|
|
|
// 构造关注关系:followed_id = "store_" + 门店手机号,fans_id = "user_" + 用户手机号
|
|
|
String followedId = "store_" + storePhone;
|
|
|
String fansId = "user_" + lifeUser.getUserPhone();
|
|
|
-
|
|
|
+
|
|
|
// 查询关注关系
|
|
|
LambdaQueryWrapper<LifeFans> fansWrapper = new LambdaQueryWrapper<>();
|
|
|
fansWrapper.eq(LifeFans::getFollowedId, followedId)
|
|
|
.eq(LifeFans::getFansId, fansId)
|
|
|
.eq(LifeFans::getDeleteFlag, 0);
|
|
|
LifeFans lifeFans = lifeFansMapper.selectOne(fansWrapper);
|
|
|
-
|
|
|
+
|
|
|
if (lifeFans != null) {
|
|
|
isFollowed = 1; // 已关注
|
|
|
} else {
|
|
|
@@ -1668,11 +1724,11 @@ public class StoreInfoController {
|
|
|
isFollowed = 0; // 无法获取用户手机号或店铺手机号,默认未关注
|
|
|
}
|
|
|
} catch (NumberFormatException e) {
|
|
|
- log.error("用户ID格式错误 - userId: {}, storeId: {}, error: {}",
|
|
|
+ log.error("用户ID格式错误 - userId: {}, storeId: {}, error: {}",
|
|
|
userLoginInfo.getUserId(), store.getId(), e.getMessage());
|
|
|
isFollowed = 0; // 用户ID格式错误,默认未关注
|
|
|
} catch (Exception e) {
|
|
|
- log.error("查询用户关注状态失败 - userId: {}, storeId: {}, error: {}",
|
|
|
+ log.error("查询用户关注状态失败 - userId: {}, storeId: {}, error: {}",
|
|
|
userLoginInfo.getUserId(), store.getId(), e.getMessage(), e);
|
|
|
isFollowed = 0; // 查询失败,默认未关注
|
|
|
}
|