|
@@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -72,6 +73,7 @@ public class StoreInfoController {
|
|
|
private final StoreInfoMapper storeInfoMapper;
|
|
private final StoreInfoMapper storeInfoMapper;
|
|
|
private final LifeBlacklistMapper lifeBlacklistMapper;
|
|
private final LifeBlacklistMapper lifeBlacklistMapper;
|
|
|
private final StoreUserMapper storeUserMapper;
|
|
private final StoreUserMapper storeUserMapper;
|
|
|
|
|
+ private final LifeFansMapper lifeFansMapper;
|
|
|
|
|
|
|
|
@ApiOperation("获取所有门店")
|
|
@ApiOperation("获取所有门店")
|
|
|
@ApiOperationSupport(order = 1)
|
|
@ApiOperationSupport(order = 1)
|
|
@@ -1591,7 +1593,7 @@ public class StoreInfoController {
|
|
|
// 执行分页查询
|
|
// 执行分页查询
|
|
|
IPage<StoreInfo> result = storeInfoMapper.selectPage(pageObj, queryWrapper);
|
|
IPage<StoreInfo> result = storeInfoMapper.selectPage(pageObj, queryWrapper);
|
|
|
|
|
|
|
|
- // 批量查询商户头像
|
|
|
|
|
|
|
+ // 批量查询商户头像和手机号
|
|
|
List<Integer> storeIds = new ArrayList<>();
|
|
List<Integer> storeIds = new ArrayList<>();
|
|
|
for (StoreInfo store : result.getRecords()) {
|
|
for (StoreInfo store : result.getRecords()) {
|
|
|
if (store.getId() != null) {
|
|
if (store.getId() != null) {
|
|
@@ -1600,20 +1602,31 @@ public class StoreInfoController {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Map<Integer, String> headImgMap = new HashMap<>();
|
|
Map<Integer, String> headImgMap = new HashMap<>();
|
|
|
|
|
+ Map<Integer, String> storePhoneMap = new HashMap<>(); // 店铺ID -> 门店手机号
|
|
|
if (!storeIds.isEmpty()) {
|
|
if (!storeIds.isEmpty()) {
|
|
|
|
|
+ // 批量查询店铺信息,获取门店手机号
|
|
|
|
|
+ List<StoreInfo> storeInfoList = storeInfoMapper.selectBatchIds(storeIds);
|
|
|
|
|
+ for (StoreInfo storeInfo : storeInfoList) {
|
|
|
|
|
+ if (storeInfo.getId() != null && StringUtils.isNotEmpty(storeInfo.getStoreTel())) {
|
|
|
|
|
+ storePhoneMap.put(storeInfo.getId(), storeInfo.getStoreTel());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
LambdaQueryWrapper<StoreUser> userWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<StoreUser> userWrapper = new LambdaQueryWrapper<>();
|
|
|
userWrapper.in(StoreUser::getStoreId, storeIds)
|
|
userWrapper.in(StoreUser::getStoreId, storeIds)
|
|
|
.eq(StoreUser::getDeleteFlag, 0);
|
|
.eq(StoreUser::getDeleteFlag, 0);
|
|
|
List<StoreUser> storeUsers = storeUserMapper.selectList(userWrapper);
|
|
List<StoreUser> storeUsers = storeUserMapper.selectList(userWrapper);
|
|
|
for (StoreUser user : storeUsers) {
|
|
for (StoreUser user : storeUsers) {
|
|
|
- if (user.getStoreId() != null && user.getHeadImg() != null) {
|
|
|
|
|
|
|
+ if (user.getStoreId() != null) {
|
|
|
// 如果同一个店铺有多个用户,取第一个(通常是主账号)
|
|
// 如果同一个店铺有多个用户,取第一个(通常是主账号)
|
|
|
- headImgMap.putIfAbsent(user.getStoreId(), user.getHeadImg());
|
|
|
|
|
|
|
+ if (user.getHeadImg() != null) {
|
|
|
|
|
+ headImgMap.putIfAbsent(user.getStoreId(), user.getHeadImg());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 转换为包含头像的VO对象
|
|
|
|
|
|
|
+ // 转换为包含头像和关注状态的VO对象
|
|
|
List<StoreInfoWithHeadImg> voList = new ArrayList<>();
|
|
List<StoreInfoWithHeadImg> voList = new ArrayList<>();
|
|
|
for (StoreInfo store : result.getRecords()) {
|
|
for (StoreInfo store : result.getRecords()) {
|
|
|
StoreInfoWithHeadImg vo = new StoreInfoWithHeadImg();
|
|
StoreInfoWithHeadImg vo = new StoreInfoWithHeadImg();
|
|
@@ -1621,6 +1634,53 @@ public class StoreInfoController {
|
|
|
// 获取商户头像,如果没有头像则设置为null
|
|
// 获取商户头像,如果没有头像则设置为null
|
|
|
String headImg = headImgMap.get(store.getId());
|
|
String headImg = headImgMap.get(store.getId());
|
|
|
vo.setHeadImg(headImg != null && !headImg.trim().isEmpty() ? headImg : null);
|
|
vo.setHeadImg(headImg != null && !headImg.trim().isEmpty() ? headImg : null);
|
|
|
|
|
+
|
|
|
|
|
+ // 当前登录用户是否关注该店铺
|
|
|
|
|
+ Integer isFollowed = 0; // 默认未关注
|
|
|
|
|
+ if (userLoginInfo != null && userLoginInfo.getUserId() > 0 && "user".equals(userLoginInfo.getType())) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ // userId是用户ID(数字),查询用户信息获取手机号
|
|
|
|
|
+ Integer userId = userLoginInfo.getUserId();
|
|
|
|
|
+ LifeUser lifeUser = lifeUserMapper.selectById(userId);
|
|
|
|
|
+
|
|
|
|
|
+ // 获取门店手机号
|
|
|
|
|
+ String storePhone = storePhoneMap.get(store.getId());
|
|
|
|
|
+
|
|
|
|
|
+ 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 {
|
|
|
|
|
+ isFollowed = 0; // 未关注
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ isFollowed = 0; // 无法获取用户手机号或店铺手机号,默认未关注
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
|
|
+ log.error("用户ID格式错误 - userId: {}, storeId: {}, error: {}",
|
|
|
|
|
+ userLoginInfo.getUserId(), store.getId(), e.getMessage());
|
|
|
|
|
+ isFollowed = 0; // 用户ID格式错误,默认未关注
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("查询用户关注状态失败 - userId: {}, storeId: {}, error: {}",
|
|
|
|
|
+ userLoginInfo.getUserId(), store.getId(), e.getMessage(), e);
|
|
|
|
|
+ isFollowed = 0; // 查询失败,默认未关注
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ isFollowed = 0; // 用户未登录或不是普通用户,默认未关注
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ vo.setIsFollowed(isFollowed);
|
|
|
voList.add(vo);
|
|
voList.add(vo);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1647,6 +1707,10 @@ public class StoreInfoController {
|
|
|
@ApiModelProperty(value = "商户头像(来自store_user表的head_img字段)")
|
|
@ApiModelProperty(value = "商户头像(来自store_user表的head_img字段)")
|
|
|
@TableField(exist = false)
|
|
@TableField(exist = false)
|
|
|
private String headImg;
|
|
private String headImg;
|
|
|
|
|
+
|
|
|
|
|
+ @ApiModelProperty(value = "是否已关注(1-已关注,0-未关注)")
|
|
|
|
|
+ @TableField(exist = false)
|
|
|
|
|
+ private Integer isFollowed;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|