feat:浦江优化

This commit is contained in:
dzc committed 2026-09-29 19:55:51 +08:00
1 parent da549b19aa
commit 7ae8d3e14b
7 files changed
+77 -8

No files matched your search

@@ -158,7 +158,8 @@ public class MchManageController {
@Operation(summary = "app查询合作商家的分店", description = "app查询合作商家的分店")
@GetMapping("/app/children-page-join")
@Inner(value = false)
// 不再 @Inner(value = false) 匿名放行:未登录/token 过期时返回 424,
// 与 page-join 行为一致,避免匿名上下文下静默查空导致前端显示"暂无分店"
public R<Page<MchManageVo>> appParentPageJoin(@ParameterObject Page page, @ParameterObject MchManageDto dto) {
dto.setVisibleMobile(YesNoEnum.YES.getCode());
dto.setTypes(MerchantTypeEnum.SUPERMARKET.getType());
@@ -6,6 +6,7 @@ import cn.hutool.extra.spring.SpringUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.admin.api.dto.UserInfo;
@@ -16,6 +17,7 @@ import com.bsd.pjcloud.admin.api.feign.RemoteUserService;
import com.bsd.pjcloud.admin.api.utils.DataUtil;
import com.bsd.pjcloud.common.core.constant.CacheConstants;
import com.bsd.pjcloud.common.core.constant.enums.MerchantTypeEnum;
import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.core.util.CollectionUtils;
import com.bsd.pjcloud.common.core.util.QRCodeImageGenerator;
@@ -59,8 +61,10 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
/**
@@ -202,10 +206,33 @@ public class MchManageServiceImpl extends ServiceImpl<MchManageMapper, MchManage
DataUtil.convertDeptList(list.getRecords(), deptList.getData());
}
}
// 主店列表:实时统计可见分店数覆盖冗余字段 mchCount,保证与 children-page-join 查询口径一致
if (Boolean.TRUE.equals(dto.getParentIsNull())) {
fillMchCount(list.getRecords());
}
}
return list;
}
/**
* 按 parent_id 实时统计各主店可见分店数(visible_mobile=1,逻辑删除自动过滤),
* 覆盖 mch_manage.mch_count 冗余计数,避免分店增删/隐藏后计数与实际不一致
*/
private void fillMchCount(List<MchManageVo> records) {
List<Long> ids = records.stream().map(MchManageVo::getId).filter(Objects::nonNull).toList();
if (ObjectUtil.isEmpty(ids)) return;
QueryWrapper<MchManageEntity> wrapper = new QueryWrapper<>();
wrapper.select("parent_id", "count(*) as cnt")
.in("parent_id", ids)
.eq("visible_mobile", YesNoEnum.YES.getCode())
.groupBy("parent_id");
Map<Long, Long> countMap = new HashMap<>();
for (Map<String, Object> row : baseMapper.selectMaps(wrapper)) {
countMap.put(Long.valueOf(String.valueOf(row.get("parent_id"))), Long.valueOf(String.valueOf(row.get("cnt"))));
}
records.forEach(v -> v.setMchCount(countMap.getOrDefault(v.getId(), 0L)));
}
/**
* 分页级联
*/