云联一号 2 недель назад
Родитель
Сommit
a95e622443

+ 3 - 1
fs-admin/src/main/java/com/fs/FSApplication.java

@@ -23,7 +23,9 @@ import org.springframework.transaction.annotation.Transactional;
             // hisStore.controller 与 his.controller 同名 bean 冲突,admin端用 his 包的版本
             // hisStore.controller 与 his.controller 同名 bean 冲突,admin端用 his 包的版本
             "com\\.fs\\.hisStore\\.controller\\..*",
             "com\\.fs\\.hisStore\\.controller\\..*",
             // his.FsAiWorkflowController 与 admin.AdminAiWorkflowBridgeController URL 冲突,admin端用桥接版
             // his.FsAiWorkflowController 与 admin.AdminAiWorkflowBridgeController URL 冲突,admin端用桥接版
-            "com\\.fs\\.his\\.controller\\.FsAiWorkflowController"
+            "com\\.fs\\.his\\.controller\\.FsAiWorkflowController",
+            // company.knowledge.CompanyAiProviderController 与 admin.AiProviderAdminController URL 冲突
+            "com\\.fs\\.company\\.controller\\.knowledge\\.CompanyAiProviderController"
         })
         })
     }
     }
 )
 )

+ 0 - 427
fs-admin/src/main/java/com/fs/admin/controller/tenant/TenantInfoController.java

@@ -1,427 +0,0 @@
-package com.fs.admin.controller.tenant;
-
-import com.fs.common.annotation.DataSource;
-import com.fs.common.annotation.Log;
-import com.fs.common.constant.UserConstants;
-import com.fs.common.core.controller.BaseController;
-import com.fs.common.core.domain.AjaxResult;
-import com.fs.common.core.domain.R;
-import com.fs.common.core.domain.entity.SysMenu;
-import com.fs.common.core.domain.entity.TenantCompanyMenu;
-import com.fs.common.core.page.TableDataInfo;
-import com.fs.common.enums.BusinessType;
-import com.fs.common.enums.DataSourceType;
-import com.fs.common.exception.CustomException;
-import com.fs.common.utils.StringUtils;
-import com.fs.common.utils.poi.ExcelUtil;
-import com.fs.framework.datasource.DynamicDataSourceContextHolder;
-import com.fs.framework.datasource.TenantDataSourceManager;
-import com.fs.system.domain.SysConfig;
-import com.fs.system.service.ISysConfigService;
-import com.fs.tenant.domain.TenantInfo;
-import com.fs.tenant.dto.MenuDto;
-import com.fs.tenant.dto.SysConfigDto;
-import com.fs.tenant.mapper.TenantInfoMapper;
-import com.fs.tenant.service.TenantInfoService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.util.CollectionUtils;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * 租户基础信息Controller(SaaS 下租户表仅在主库,强制走主库)
- *
- * @author fs
- * @date 2026-01-23
- */
-@DataSource(DataSourceType.MASTER)
-@RestController("adminTenantInfoController")
-@RequestMapping("/tenant/tenant")
-public class TenantInfoController extends BaseController
-{
-    @Autowired
-    private TenantInfoService tenantInfoService;
-
-    @Autowired
-    private ISysConfigService configService;
-
-    @Autowired
-    private TenantInfoMapper tenantInfoMapper;
-
-    @Autowired
-    private TenantDataSourceManager tenantDataSourceManager;
-    /**
-     * 查询租户基础信息列表
-     */
-    @PreAuthorize("@ss.hasPermi('tenant:tenant:list')")
-    @GetMapping("/list")
-    public TableDataInfo list(TenantInfo tenantInfo)
-    {
-        startPage();
-        List<TenantInfo> list = tenantInfoService.selectTenantInfoList(tenantInfo);
-        return getDataTable(list);
-    }
-
-    /**
-     * 查询所有租户id以及租户名称 租户编码
-     */
-    @PreAuthorize("@ss.hasPermi('tenant:tenant:list')")
-    @GetMapping("/tenantList")
-    public R tenantList(TenantInfo tenantInfo)
-    {
-        return R.ok().put("rows",tenantInfoService.tenantList(tenantInfo));
-    }
-
-    /**
-     * 导出租户基础信息列表
-     */
-    @PreAuthorize("@ss.hasPermi('tenant:tenant:export')")
-    @Log(title = "租户基础信息", businessType = BusinessType.EXPORT)
-    @GetMapping("/export")
-    public AjaxResult export(TenantInfo tenantInfo)
-    {
-        List<TenantInfo> list = tenantInfoService.selectTenantInfoList(tenantInfo);
-        ExcelUtil<TenantInfo> util = new ExcelUtil<TenantInfo>(TenantInfo.class);
-        return util.exportExcel(list, "租户基础信息数据");
-    }
-
-    /**
-     * 获取租户基础信息详细信息
-     */
-    @PreAuthorize("@ss.hasPermi('tenant:tenant:query')")
-    @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") String id)
-    {
-        return AjaxResult.success(tenantInfoService.selectTenantInfoById(id));
-    }
-
-    /**
-     * 新增租户基础信息
-     */
-    @PreAuthorize("@ss.hasPermi('tenant:tenant:add')")
-    @Log(title = "租户基础信息", businessType = BusinessType.INSERT)
-    @PostMapping
-    public R add(@RequestBody TenantInfo tenantInfo)
-    {
-        int i = tenantInfoService.insertTenantInfo(tenantInfo);
-        return i > 0 ? R.ok("租户数据库初始化中,请稍后") : R.error("租户创建失败");
-    }
-
-    /**
-     * 修改租户基础信息
-     */
-    @PreAuthorize("@ss.hasPermi('tenant:tenant:edit')")
-    @Log(title = "修改租户基础信息", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@RequestBody TenantInfo tenantInfo)
-    {
-        return toAjax(tenantInfoService.updateTenantInfo(tenantInfo));
-    }
-
-    /**
-     * 删除租户基础信息
-     */
-    @PreAuthorize("@ss.hasPermi('tenant:tenant:remove')")
-    @Log(title = "删除租户基础信息", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable String[] ids)
-    {
-        return toAjax(tenantInfoService.deleteTenantInfoByIds(ids));
-    }
-
-    /**
-     * 租户菜单修改(获取租户菜单)
-     */
-    @PreAuthorize("@ss.hasPermi('tenant:tenant:edit')")
-    @PostMapping("/menu")
-    public R menuChange(@RequestBody Map<String,Object> map)
-    {
-        String id = map.get("id").toString();
-        TenantInfo tenantInfo = tenantInfoMapper.selectTenantInfoById(id);
-        if (tenantInfo.getStatus() == 2) {
-            throw new CustomException("租户初始化中");
-        }
-
-        // 先查一下标准菜单
-        String flag = map.get("flag").toString();
-        if ("sys".equals(flag)){
-            List<SysMenu> sysMenus = tenantInfoMapper.selectMenuList(new SysMenu());
-            tenantDataSourceManager.switchTenant(tenantInfo);
-            return tenantInfoService.menuChange(flag, sysMenus,null);
-        }
-
-        List<TenantCompanyMenu> companyMenus = tenantInfoMapper.selectCompanyMenuList(new TenantCompanyMenu());
-        tenantDataSourceManager.switchTenant(tenantInfo);
-        return tenantInfoService.menuChange(flag,null,companyMenus);
-
-    }
-
-    /**
-     * 租户菜单修改
-     */
-    @PreAuthorize("@ss.hasPermi('tenant:tenant:edit')")
-    @PostMapping("/menu/edit")
-    public R menuEdit(@RequestBody MenuDto menuDto)
-    {
-        TenantInfo tenantInfo = tenantInfoMapper.selectTenantInfoById(menuDto.getId());
-        if (tenantInfo.getStatus() == 2) {
-            throw new CustomException("租户初始化中");
-        }
-
-        List<Long> selected = menuDto.getSelected();
-        List<Long> unSelected = menuDto.getUnSelected();
-        if ("sys".equals(menuDto.getFlag())) {
-            List<SysMenu> addSysMenu = getAddSysMenu(tenantInfo, menuDto.getSelected());
-            tenantDataSourceManager.switchTenant(tenantInfo);
-            return tenantInfoService.menuEdit(selected, unSelected, menuDto.getFlag(),addSysMenu,null);
-        }
-
-        List<TenantCompanyMenu> addCompanyMenu = getAddCompanyMenu(tenantInfo, menuDto.getSelected());
-        tenantDataSourceManager.switchTenant(tenantInfo);
-        return tenantInfoService.menuEdit(selected, unSelected, menuDto.getFlag(),null,addCompanyMenu);
-    }
-
-
-    /**
-     * 租户配置修改
-     */
-    @PreAuthorize("@ss.hasPermi('tenant:config:edit')")
-    @PostMapping("/config/edit")
-    public R configEdit(@Validated @RequestBody SysConfigDto config)
-    {
-        TenantInfo tenantInfo = tenantInfoMapper.selectTenantInfoById(config.getId());
-        if (tenantInfo.getStatus() == 2) {
-            throw new CustomException("租户初始化中");
-        }
-
-        tenantDataSourceManager.switchTenant(tenantInfo);
-        //修复只能更新的BUG
-        if (null != config.getConfigId()) {
-            return R.ok().put("data", configService.updateConfig(config));
-        } else {
-           return R.ok().put("data", configService.insertConfig(config));
-        }
-    }
-
-    /**
-     * 根据租户id获取指定配置文件
-     *
-     * @param configKey
-     * @param id
-     * @return
-     */
-    @GetMapping(value = "/getConfigByKey/{configKey}")
-    public AjaxResult getConfigByKey(@PathVariable String configKey,String id) {
-        TenantInfo tenantInfo = tenantInfoMapper.selectTenantInfoById(id);
-        if (tenantInfo.getStatus() == 2) {
-            throw new CustomException("租户初始化中");
-        }
-
-        tenantDataSourceManager.switchTenant(tenantInfo);
-        SysConfig config = configService.selectConfigByConfigKey(configKey);
-        return AjaxResult.success(config);
-    }
-
-    /**
-     * 获取需要更新的后台菜单
-     */
-    private List<SysMenu> getAddSysMenu(TenantInfo tenantInfo,List<Long> selected){
-        // 切换到租户库
-        tenantDataSourceManager.switchTenant(tenantInfo);
-        // 查询租户库里已经存在的menuId
-        List<Long> existIds = tenantInfoMapper.selectExistMenuIds();
-        // 不存在的menuId(就是要新增的)
-        List<Long> needAddIds = selected.stream()
-                .filter(id -> !existIds.contains(id))
-                .collect(Collectors.toList());
-        // 去总库查询详细的菜单详情
-        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
-        if (!CollectionUtils.isEmpty(needAddIds)){
-            List<SysMenu> addMenuList = tenantInfoMapper.getTenSysMenuByIds(needAddIds);
-            return addMenuList;
-        }
-
-        return new ArrayList<>();
-    }
-
-    /**
-     * 获取需要更新的销售菜单
-     */
-    private List<TenantCompanyMenu> getAddCompanyMenu(TenantInfo tenantInfo, List<Long> selected){
-        // 切换到租户库
-        tenantDataSourceManager.switchTenant(tenantInfo);
-        // 查询租户库里已经存在的menuId
-        List<Long> existIds = tenantInfoMapper.selectExistComMenuIds();
-        // 不存在的menuId(就是要新增的)
-        List<Long> needAddIds = selected.stream()
-                .filter(id -> !existIds.contains(id))
-                .collect(Collectors.toList());
-        // 去总库查询详细的菜单详情
-        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
-        if (!CollectionUtils.isEmpty(needAddIds)) {
-            List<TenantCompanyMenu> addMenuList = tenantInfoMapper.getTenComMenuByIds(needAddIds);
-            return addMenuList;
-        }
-
-        return new ArrayList<>();
-    }
-
-    /**
-     * 获取租户总后台菜单列表
-     */
-    @PreAuthorize("@ss.hasPermi('system:menu:list')")
-    @GetMapping("/tenantMenu/list")
-    public AjaxResult list(SysMenu menu)
-    {
-        List<SysMenu> menus = tenantInfoService.selectMenuList(menu, getUserId());
-        return AjaxResult.success(menus);
-    }
-
-    /**
-     * 获取租户销售菜单列表
-     */
-    @PreAuthorize("@ss.hasPermi('system:menu:list')")
-    @GetMapping("/tenantComMenu/list")
-    public AjaxResult list(TenantCompanyMenu menu)
-    {
-        List<TenantCompanyMenu> menus = tenantInfoService.selectCompanyMenuList(menu, getUserId());
-        return AjaxResult.success(menus);
-    }
-
-
-    /**
-     * 根据菜单编号获取详细信息
-     */
-    @PreAuthorize("@ss.hasPermi('system:menu:query')")
-    @GetMapping(value = "/tenantMenu/{menuId}")
-    public AjaxResult getInfo(@PathVariable Long menuId)
-    {
-        return AjaxResult.success(tenantInfoService.selectMenuById(menuId));
-    }
-
-    /**
-     * 根据菜单编号获取详细信息
-     */
-    @PreAuthorize("@ss.hasPermi('system:menu:query')")
-    @GetMapping(value = "/getTenantComMenu/{menuId}")
-    public AjaxResult getTenantComMenu(@PathVariable Long menuId)
-    {
-        return AjaxResult.success(tenantInfoService.getTenantComMenu(menuId));
-    }
-
-
-    /**
-     * 新增菜单
-     */
-    @PreAuthorize("@ss.hasPermi('system:menu:add')")
-    @Log(title = "菜单管理", businessType = BusinessType.INSERT)
-    @PostMapping("/addTenantMenu")
-    public AjaxResult add(@Validated @RequestBody SysMenu menu)
-    {
-        if (UserConstants.NOT_UNIQUE.equals(tenantInfoService.checkMenuNameUnique(menu)))
-        {
-            return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
-        }
-        else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath()))
-        {
-            return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
-        }
-        menu.setCreateBy(getUsername());
-        return toAjax(tenantInfoService.insertMenu(menu));
-    }
-
-    @PreAuthorize("@ss.hasPermi('system:menu:add')")
-    @Log(title = "菜单管理", businessType = BusinessType.INSERT)
-    @PostMapping("/addTenantComMenu")
-    public AjaxResult addTenantComMenu(@Validated @RequestBody TenantCompanyMenu menu)
-    {
-        if (UserConstants.NOT_UNIQUE.equals(tenantInfoService.checkComMenuNameUnique(menu)))
-        {
-            return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
-        }
-        else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath()))
-        {
-            return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
-        }
-        menu.setCreateBy(getUsername());
-        return toAjax(tenantInfoService.insertComMenu(menu));
-    }
-
-    /**
-     * 修改菜单
-     */
-    @PreAuthorize("@ss.hasPermi('system:menu:edit')")
-    @Log(title = "菜单管理", businessType = BusinessType.UPDATE)
-    @PutMapping("/updateTenantMenu")
-    public AjaxResult edit(@Validated @RequestBody SysMenu menu)
-    {
-        if (UserConstants.NOT_UNIQUE.equals(tenantInfoService.checkMenuNameUnique(menu)))
-        {
-            return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
-        }
-        else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath()))
-        {
-            return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
-        }
-        else if (menu.getMenuId().equals(menu.getParentId()))
-        {
-            return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己");
-        }
-        menu.setUpdateBy(getUsername());
-        return toAjax(tenantInfoService.updateMenu(menu));
-    }
-
-    /**
-     * 修改菜单
-     */
-    @PreAuthorize("@ss.hasPermi('system:menu:edit')")
-    @Log(title = "菜单管理", businessType = BusinessType.UPDATE)
-    @PutMapping("/updateTenantComMenu")
-    public AjaxResult updateTenantComMenu(@Validated @RequestBody TenantCompanyMenu menu)
-    {
-        if (UserConstants.NOT_UNIQUE.equals(tenantInfoService.checkComMenuNameUnique(menu)))
-        {
-            return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
-        }
-        else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath()))
-        {
-            return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
-        }
-        else if (menu.getMenuId().equals(menu.getParentId()))
-        {
-            return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己");
-        }
-        menu.setUpdateBy(getUsername());
-        return toAjax(tenantInfoService.updateComMenu(menu));
-    }
-
-    @PreAuthorize("@ss.hasPermi('system:menu:remove')")
-    @Log(title = "菜单管理", businessType = BusinessType.DELETE)
-    @DeleteMapping("/delTenantMenu/{menuId}")
-    public AjaxResult remove(@PathVariable("menuId") Long menuId)
-    {
-        if (tenantInfoService.hasChildByMenuId(menuId))
-        {
-            return AjaxResult.error("存在子菜单,不允许删除");
-        }
-        return toAjax(tenantInfoService.deleteMenuById(menuId));
-    }
-
-    @PreAuthorize("@ss.hasPermi('system:menu:remove')")
-    @Log(title = "菜单管理", businessType = BusinessType.DELETE)
-    @DeleteMapping("/delTenantComMenu/{menuId}")
-    public AjaxResult delTenantComMenu(@PathVariable("menuId") Long menuId)
-    {
-        if (tenantInfoService.hasChildByComMenuId(menuId))
-        {
-            return AjaxResult.error("存在子菜单,不允许删除");
-        }
-        return toAjax(tenantInfoService.deleteComMenuById(menuId));
-    }
-}