刘帅
2026-09-18 119981efb6a18165cdf24a9a050c05f7485b7ae8
feat:门店店长手机号填写方式变更
5个文件已修改
126 ■■■■■ 已修改文件
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);