cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
@@ -335,6 +335,7 @@ 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("type",1); // 如果当前登陆人是运营商 if (UserExt.getUser().getObjectType()==2){ @@ -416,6 +417,7 @@ 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("type",0); return PREFIX + "TShop_edit.html"; @@ -508,8 +510,15 @@ @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 +611,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 +651,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; @@ -704,6 +728,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 +747,20 @@ 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; } @RequestMapping(value = "/onChange") @ResponseBody public Object onChange(Integer oneId) { cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java
@@ -3,7 +3,6 @@ import cn.hutool.crypto.SecureUtil; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.dsh.course.mapper.UserMapper; @@ -411,7 +410,6 @@ this.userService.save(objectUser); if (!assignedStores.isEmpty()) { replaceStoreRelations(objectUser.getId(), assignedStores); syncStoreManagers(objectUser, Collections.<Integer>emptyList(), assignedStores); } return SUCCESS_TIP; } @@ -451,7 +449,6 @@ if (user.getAvatar()!=null && (!user.getAvatar().equals(""))) oldUser.setAvatar(user.getAvatar()); if (user.getStoreIds() != null) { List<Integer> previousStoreIds = userMapper.getStoreIdsByUserId(oldUser.getId()); List<TStore> assignedStores = validateStores(user.getStoreIds()); if (assignedStores == null) return ResultUtil.error("所选门店不存在、已停用或不在当前账号管理范围内"); replaceStoreRelations(oldUser.getId(), assignedStores); @@ -463,16 +460,8 @@ // 清除旧字段关联,避免已移除的首个门店仍被当作该员工所属门店。 oldUser.setObjectId(null); } syncStoreManagers(oldUser, previousStoreIds, assignedStores); } this.userService.updateById(oldUser); // 门店表仅保存店长 ID 和联系电话;店长名称由 storeStaffId 关联 sys_user.name 展示。 // 员工资料修改但门店未修改时,也要将其手机号同步给当前负责的门店。 if (user.getStoreIds() == null) { storeService.update(new LambdaUpdateWrapper<TStore>() .eq(TStore::getStoreStaffId, oldUser.getId()) .set(TStore::getPhone, oldUser.getPhone())); } return SUCCESS_TIP; } @@ -511,32 +500,6 @@ userMapper.deleteStoreRelations(userId); for (TStore store : stores) { userMapper.insertStoreRelation(IdWorker.getId(), userId, store.getId()); } } /** * 同步员工与门店的负责人信息。门店移除时,只清理仍由该员工负责的门店, * 防止并发或后续操作已为门店设置新店长时被错误覆盖。 */ private void syncStoreManagers(User user, List<Integer> previousStoreIds, List<TStore> assignedStores) { Set<Integer> assignedStoreIds = assignedStores.stream() .map(TStore::getId) .collect(Collectors.toSet()); for (Integer previousStoreId : previousStoreIds) { if (!assignedStoreIds.contains(previousStoreId)) { storeService.update(new LambdaUpdateWrapper<TStore>() .eq(TStore::getId, previousStoreId) .eq(TStore::getStoreStaffId, user.getId()) .set(TStore::getStoreStaffId, null) .set(TStore::getPhone, null)); } } for (TStore store : assignedStores) { store.setStoreStaffId(user.getId()); store.setPhone(user.getPhone()); storeService.updateById(store); } } cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add.html
@@ -108,7 +108,8 @@ </div> </div> <#input id="name" name="*门店名称" placeholder= "请输入门店名称" type="text"/> <#input id="phone" name="*联系电话" placeholder= "请输入联系电话" type="text"/> <#input id="phone" name="*店长手机号" placeholder= "请输入店长手机号" type="text"/> <#input id="userName" name="*店长姓名" placeholder="请输入店长姓名" type="text"/> <div class="form-group"> <label class="col-sm-3 control-label">*门店地址:</label> <div class="col-sm-9"> cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html
@@ -87,7 +87,8 @@ </div> </div> <#input id="name" name="门店名称" type="text" value="${item.name}"/> <#input id="phone" name="联系电话" type="text" value="${item.phone}"/> <#input id="phone" name="店长手机号" type="text" value="${item.phone}"/> <#input id="userName" name="店长姓名" type="text" value="${managerName}"/> <div hidden id="longitude" value="${item.lon}"></div> <div hidden id="latitude" value="${item.lat}"></div> <div class="form-group"> cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js
@@ -226,6 +226,7 @@ let name = $("#name").val() let phone = $("#phone").val() let userName = $("#userName").val() var elementById = document.getElementById("radio1"); if (elementById != null){ if (elementById.checked) { @@ -262,7 +263,11 @@ return ; } if(phone==''){ Feng.info("联系电话不能为空") Feng.info("店长手机号不能为空") return; } if(userName==''){ Feng.info("请输入店长姓名") return; } @@ -306,15 +311,20 @@ } //提交信息 var ajax = new $ax(Feng.ctxPath + "/tShop/add", function(data){ Feng.success("添加成功!"); window.parent.TCompetition.table.refresh(); TCarInfoDlg.close(); if(data === "5001"){ Feng.error("该店长手机号已经存在!"); } else { Feng.success("添加成功!"); window.parent.TCompetition.table.refresh(); TCarInfoDlg.close(); } }); ajax.set(this.tCarInfoData); ajax.set("provinceCode",pCode); ajax.set("cityCode",cCode); ajax.set("name",name); ajax.set("phone",phone); ajax.set("userName",userName); ajax.set("cityManagerId",null); ajax.set("address",address); ajax.set("time",time); @@ -465,6 +475,7 @@ let name = $("#name").val() let phone = $("#phone").val() let userName = $("#userName").val() if(pCode=='' && $("#role").val()=="1" && OBJradio==2){ Feng.info("请选择省") @@ -493,7 +504,11 @@ } if(phone==''){ Feng.info("联系电话不能为空") Feng.info("店长手机号不能为空") return; } if(userName==''){ Feng.info("请输入店长姓名") return; } @@ -538,7 +553,9 @@ //提交信息 var ajax = new $ax(Feng.ctxPath + "/tShop/update", function(data){ if(data.code == 200){ if(data === "5001"){ Feng.error("该店长手机号已经存在!"); } else if(data.code == 200){ if(language==1){ Feng.success("修改成功!"); }else if(language==2){ @@ -559,6 +576,7 @@ ajax.set("cityCode",cCode); ajax.set("name",name); ajax.set("phone",phone); ajax.set("userName",userName); ajax.set("cityManagerId",account); ajax.set("address",address); ajax.set("time",time);