From 9a6551aebd6b523439beda5c642371998c5289f6 Mon Sep 17 00:00:00 2001
From: 刘帅 <rr.iii@qq.com>
Date: 星期三, 30 九月 2026 09:57:53 +0800
Subject: [PATCH] 门店手机号展示问题
---
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java | 57 +++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 49 insertions(+), 8 deletions(-)
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
index bd8d704..3eeddb7 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
@@ -336,6 +336,8 @@
User byId1 = userMapper.selectById(byId.getStoreStaffId());
model.addAttribute("city",byId1);
model.addAttribute("managerName", byId1 == null ? "" : byId1.getName());
+ // 历史门店的手机号可能只保存在店长账号中,编辑页需与列表保持一致地回填可用手机号。
+ model.addAttribute("managerPhone", resolveStoreManagerPhone(byId, byId1));
model.addAttribute("type",1);
// 如果当前登陆人是运营商
if (UserExt.getUser().getObjectType()==2){
@@ -418,6 +420,7 @@
User byId1 = userMapper.selectById(byId.getStoreStaffId());
model.addAttribute("city",byId1);
model.addAttribute("managerName", byId1 == null ? "" : byId1.getName());
+ model.addAttribute("managerPhone", resolveStoreManagerPhone(byId, byId1));
model.addAttribute("type",0);
return PREFIX + "TShop_edit.html";
@@ -471,18 +474,42 @@
@ResponseBody
public Object list(String provinceCode, String cityCode , String name, String phone,String shopName) {
Page<TStoreListVo> page = new PageFactory<TStoreListVo>().defaultPage();
- String roleid = UserExt.getUser().getRoleid();
List<TStoreListVo> list =new ArrayList<>();
- if("3".equals(roleid)){
- Integer objectId = UserExt.getUser().getObjectId();
- list = storeService.listAllStore(page,provinceCode,cityCode,name,phone,shopName,objectId);
- }else {
+ Integer objectType = UserExt.getUser().getObjectType();
+ if (Integer.valueOf(3).equals(objectType)) {
+ // 门店员工按员工-门店中间表的数据范围查询;getStoreIdsByUserId 同时兼容
+ // sys_user.objectId 和 t_store.storeStaffId 两种历史归属数据。
+ List<Integer> storeIds = userMapper.getStoreIdsByUserId(UserExt.getUser().getId());
+ if (!CollectionUtils.isEmpty(storeIds)) {
+ list = storeService.listAllStoresByIds(page, provinceCode, cityCode, name, phone, shopName, storeIds);
+ }
+ } else if (Integer.valueOf(2).equals(objectType)) {
Integer objectId = UserExt.getUser().getObjectId();
list = storeService.listAll(page,provinceCode,cityCode,name,phone,shopName,objectId);
+ } else {
+ // 平台账号不带运营商条件,查询全部门店;数据范围由 objectType 决定,
+ // 不能用 roleid(菜单权限)判断,避免员工被授予角色 1 后被误当成运营商。
+ list = storeService.listAll(page, provinceCode, cityCode, name, phone, shopName, null);
}
+ normalizePhoneFields(list);
page.setRecords(list);
return super.packForBT(page);
}
+
+ /**
+ * 统一将列表 DTO 的底层字段写回非 null 值。
+ *
+ * 部分运行环境使用字段序列化而非 JavaBean getter 序列化;仅在 getter 中做兜底时,
+ * 此类环境仍可能把原始 null 输出为 JSON null。这里在返回前固化字段值,保证三个
+ * 数据范围的列表接口均稳定返回 phone、userPhone 两个字符串字段。
+ */
+ private void normalizePhoneFields(List<TStoreListVo> stores) {
+ for (TStoreListVo store : stores) {
+ store.setPhone(store.getPhone());
+ store.setUserPhone(store.getUserPhone());
+ }
+ }
+
@RequestMapping(value = "/listOne")
@ResponseBody
public Object listOne(Integer id) {
@@ -503,7 +530,7 @@
@ResponseBody
public Object listTwo1(Integer id) {
Page<TStoreOtherConfigTrue> page = new PageFactory<TStoreOtherConfigTrue>().defaultPage();
- List<TStoreOtherConfigTrue> list = tStoreOtherConfigTrueService.page(page,new LambdaQueryWrapper<TStoreOtherConfigTrue>().eq(TStoreOtherConfigTrue::getPid, id).eq(TStoreOtherConfigTrue::getState,1)).getRecords();
+ List<TStoreOtherConfigTrue> list = tStoreOtherConfigTrueService.page(page,new LambdaQueryWrapper<TStoreOtherConfigTrue>().eq(TStoreOtherConfigTrue::getPid, id).eq(TStoreOtherConfigTrue::getState,1).orderByDesc(TStoreOtherConfigTrue::getId)).getRecords();
page.setRecords(list);
return super.packForBT(page);
}
@@ -698,10 +725,17 @@
}
}
}else {
- TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getId, tStore.getProvinceCode()));
+ // 编辑页提交的是行政区划编码;按 id 查询会导致查不到省、市,随后访问名称时抛出 NPE。
+ TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, tStore.getProvinceCode()));
+ if (one == null) {
+ return ERROR;
+ }
tStore.setProvince(one.getName());
tStore.setProvinceCode(one.getCode());
- TCity one1 = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getId, tStore.getCityCode()));
+ TCity one1 = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, tStore.getCityCode()));
+ if (one1 == null) {
+ return ERROR;
+ }
tStore.setCity(one1.getName());
tStore.setCityCode(one1.getCode());
}
@@ -761,6 +795,13 @@
user.setCreatetime(new Date());
return user;
}
+
+ private String resolveStoreManagerPhone(TStore store, User storeManager) {
+ if (ToolUtil.isNotEmpty(store.getPhone())) {
+ return store.getPhone();
+ }
+ return storeManager == null ? "" : storeManager.getPhone();
+ }
@RequestMapping(value = "/onChange")
@ResponseBody
public Object onChange(Integer oneId) {
--
Gitblit v1.7.1