From 7fec4a3e17c1c0fa206ec2d66a6b425022957d1d Mon Sep 17 00:00:00 2001
From: 曾富康 <1067864236@qq.com>
Date: 星期二, 16 六月 2026 15:50:18 +0800
Subject: [PATCH] 后台新增:入口设置

---
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java |  123 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 122 insertions(+), 1 deletions(-)

diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java
index c745bf9..248ebe5 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java
@@ -77,6 +77,12 @@
     @Autowired
     private ITCarServiceService tCarServiceService;
 
+    @Autowired
+    private IMenuEntryConfigService menuEntryConfigService;
+
+    @Autowired
+    private IMenuService menuService;
+
 	@Value("${pushMinistryOfTransport}")
 	private boolean pushMinistryOfTransport;
 	
@@ -107,6 +113,34 @@
         model.addAttribute("roleType", user1.getRoleType());
 
         return PREFIX + "platformEdit.html";
+    }
+
+    /**
+     * 跳转到入口设置页面
+     */
+    @RequestMapping("/menu_entry_config")
+    public String menuEntryConfig(Model model) {
+        addMenuEntryConfigModel(model);
+        return PREFIX + "menuEntryConfig.html";
+    }
+
+    /**
+     * 加载入口配置页面数据
+     */
+    private void addMenuEntryConfigModel(Model model) {
+        Integer companyId = ShiroKit.getUser().getObjectId();
+        List<MenuEntryConfig> entryConfigList = menuEntryConfigService.selectList(
+                new EntityWrapper<MenuEntryConfig>().eq("openCityId", companyId).orderBy("id", true));
+        List<Menu> entryMenuList = menuService.selectList(
+                new EntityWrapper<Menu>()
+                        .eq("status", 1)
+                        .eq("ismenu", 1)
+                        .isNotNull("url")
+                        .ne("url", "")
+                        .orderBy("levels", true)
+                        .orderBy("num", true));
+        model.addAttribute("entryConfigList", entryConfigList);
+        model.addAttribute("entryMenuList", entryMenuList);
     }
 
     /**
@@ -448,6 +482,79 @@
     }
 
     /**
+     * 保存平台入口配置,入口名称和URL以后端查询到的菜单信息为准。
+     */
+    private String saveMenuEntryConfig(String entryConfigArr) {
+        if (ToolUtil.isEmpty(entryConfigArr)) {
+            return null;
+        }
+        // 开通城市id直接取当前登录用户绑定的对象id,不由页面传入。
+        Integer companyId = ShiroKit.getUser().getObjectId();
+        JSONArray jsonArray;
+        try {
+            jsonArray = JSON.parseArray(entryConfigArr);
+        } catch (Exception e) {
+            return "入口配置格式错误";
+        }
+
+        List<MenuEntryConfig> entryConfigList = new ArrayList<>();
+        Date now = new Date();
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject = jsonArray.getJSONObject(i);
+            Long menuId = jsonObject.getLong("menuId");
+            if (menuId == null) {
+                return "请选择入口";
+            }
+            Menu menu = menuService.selectById(menuId);
+            if (menu == null || !Integer.valueOf(1).equals(menu.getStatus())
+                    || !Integer.valueOf(1).equals(menu.getIsmenu())
+                    || ToolUtil.isEmpty(menu.getUrl())) {
+                return "入口菜单不存在或已禁用";
+            }
+
+            Integer id = jsonObject.getInteger("id");
+            MenuEntryConfig entryConfig = null;
+            if (id != null) {
+                // 只能更新当前开通城市下的入口配置,避免跨城市改数据。
+                entryConfig = menuEntryConfigService.selectOne(
+                        new EntityWrapper<MenuEntryConfig>().eq("id", id).eq("openCityId", companyId));
+                if (entryConfig == null) {
+                    return "入口配置不存在";
+                }
+            }
+            if (entryConfig == null) {
+                entryConfig = new MenuEntryConfig();
+                entryConfig.setCreateTime(now);
+                entryConfig.setOpenCityId(companyId);
+            }
+            // menuName和entryUrl以后端菜单表为准,不信任前端展示值。
+            entryConfig.setTitle(jsonObject.getString("title"));
+            entryConfig.setMenuId(menu.getId());
+            entryConfig.setMenuName(menu.getName());
+            entryConfig.setEntryUrl(menu.getUrl());
+            entryConfig.setUpdateTime(now);
+            entryConfigList.add(entryConfig);
+        }
+
+        List<Integer> keepIds = new ArrayList<>();
+        for (MenuEntryConfig entryConfig : entryConfigList) {
+            if (entryConfig.getId() == null) {
+                menuEntryConfigService.insert(entryConfig);
+            } else {
+                menuEntryConfigService.updateById(entryConfig);
+            }
+            keepIds.add(entryConfig.getId());
+        }
+
+        Wrapper<MenuEntryConfig> deleteWrapper = new EntityWrapper<MenuEntryConfig>().eq("openCityId", companyId);
+        if (!keepIds.isEmpty()) {
+            deleteWrapper.notIn("id", keepIds);
+        }
+        menuEntryConfigService.delete(deleteWrapper);
+        return null;
+    }
+
+    /**
      * 修改分公司管理
      */
     @RequestMapping(value = "/update")
@@ -464,6 +571,7 @@
 	    if (commissionError != null) {
 		    return commissionError;
 	    }
+	    TCompany oldCompany = tCompanyService.selectById(tCompany.getId());
 	    tCompany.setIsNeedFerry(2);
 	    User user = userService.selectById(userId);
 	    if(null != user && ToolUtil.isNotEmpty(password)){
@@ -472,7 +580,6 @@
 	    }
 
 	    // ========== 级联更新逻辑 ==========
-	    TCompany oldCompany = tCompanyService.selectById(tCompany.getId());
 	    if (oldCompany != null && oldCompany.getType() == 2) {
 		    String driverServiceError = validateCancelledServiceDriverUsage(oldCompany, tCompany, true);
 		    if (driverServiceError != null) {
@@ -510,6 +617,20 @@
     }
 
     /**
+     * 保存入口设置
+     */
+    @RequestMapping(value = "/update_entry_config")
+    @ResponseBody
+    @Transactional(rollbackFor = Exception.class)
+    public Object updateEntryConfig(String entryConfigArr) {
+        String entryConfigError = saveMenuEntryConfig(entryConfigArr);
+        if (entryConfigError != null) {
+            return entryConfigError;
+        }
+        return SUCCESS_TIP;
+    }
+
+    /**
      * 修改加盟商管理
      */
     @RequestMapping(value = "/updateFranchisee")

--
Gitblit v1.7.1