From ee9f387a56ca3fd620c56a91c1860201a98f0ca0 Mon Sep 17 00:00:00 2001
From: 刘帅 <rr.iii@qq.com>
Date: 星期二, 22 九月 2026 09:23:26 +0800
Subject: [PATCH] bug:查看敏感信息、员工&门店管理修改问题

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java |   76 +++++++++++++++++++++++++++++++++++--
 1 files changed, 71 insertions(+), 5 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 f6a8d6d..8082caa 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
@@ -335,6 +335,9 @@
         model.addAttribute("time",byId.getStartTime()+" - "+byId.getEndTime());
         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){
@@ -416,6 +419,8 @@
         model.addAttribute("time",byId.getStartTime()+" - "+byId.getEndTime());
         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";
@@ -501,15 +506,22 @@
     @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);
     }
 
     @RequestMapping(value = "/add")
     @ResponseBody
-    public Object list(TStore tStore,String time,String ids,Integer type,Integer yyId,String lat,String lon,String pCode1,String cCode1) {
+    public Object list(TStore tStore, String time, String ids, Integer type, Integer yyId, String lat, String lon,
+                       String pCode1, String cCode1, String userName) {
         try {
+            if (ToolUtil.isEmpty(userName) || ToolUtil.isEmpty(tStore.getPhone())) {
+                return ERROR;
+            }
+            if (!userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getAccount, tStore.getPhone())).isEmpty()) {
+                return "5001";
+            }
             if(yyId==null || type==1){
                 yyId=0;
             }
@@ -602,6 +614,9 @@
             String space_id = data.getString("space_id");
             Integer integer = Integer.valueOf(space_id);
             tStore.setId(integer);
+            User storeManager = createStoreManager(userName, tStore.getPhone(), tStore.getId());
+            userMapper.insert(storeManager);
+            tStore.setStoreStaffId(storeManager.getId());
             storeService.save(tStore);
             ArrayList<StoreConfig> storeConfigs = new ArrayList<>();
             for (int i = 1; i < 9; i++) {
@@ -639,9 +654,21 @@
 
     @RequestMapping(value = "/update")
     @ResponseBody
-    public Object update(TStore tStore,String time,String ids,Integer type,Integer yyId,String lat,String lon,String pCode1,String cCode1) {
+    public Object update(TStore tStore, String time, String ids, Integer type, Integer yyId, String lat, String lon,
+                         String pCode1, String cCode1, String userName) {
         try {
             TStore byIdc = storeService.getById(tStore.getId());
+            if (ToolUtil.isEmpty(userName) || ToolUtil.isEmpty(tStore.getPhone())) {
+                return ERROR;
+            }
+            LambdaQueryWrapper<User> managerAccountQuery = new LambdaQueryWrapper<User>()
+                    .eq(User::getAccount, tStore.getPhone());
+            if (byIdc.getStoreStaffId() != null) {
+                managerAccountQuery.ne(User::getId, byIdc.getStoreStaffId());
+            }
+            if (!userMapper.selectList(managerAccountQuery).isEmpty()) {
+                return "5001";
+            }
 
             if(yyId==null){
                 yyId=0;
@@ -674,10 +701,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());
                 }
@@ -704,6 +738,17 @@
             if (UserExt.getUser().getObjectType()==2){
                 tStore.setOperatorId(null);
             }
+            User storeManager = byIdc.getStoreStaffId() == null ? null : userMapper.selectById(byIdc.getStoreStaffId());
+            if (storeManager == null) {
+                storeManager = createStoreManager(userName, tStore.getPhone(), tStore.getId());
+                userMapper.insert(storeManager);
+                tStore.setStoreStaffId(storeManager.getId());
+            } else {
+                storeManager.setName(userName);
+                storeManager.setPhone(tStore.getPhone());
+                storeManager.setAccount(tStore.getPhone());
+                userMapper.updateById(storeManager);
+            }
             storeService.updateById(tStore);
 
             return new SuccessTip<>();
@@ -712,6 +757,27 @@
             return ERROR;
         }
     }
+
+    private User createStoreManager(String name, String phone, Integer storeId) {
+        User user = new User();
+        user.setName(name);
+        user.setPhone(phone);
+        user.setAccount(phone);
+        user.setPassword(SecureUtil.md5("a123456"));
+        user.setRoleid("3");
+        user.setObjectType(3);
+        user.setObjectId(storeId);
+        user.setStatus(1);
+        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