wlzboy
2025-10-25 a5b842f1f6ab32f1af39f4bcb7e45217e94db761
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -9,6 +9,7 @@
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysMenu;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginBody;
@@ -17,6 +18,7 @@
import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.framework.web.service.SysPermissionService;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysMenuService;
/**
@@ -38,6 +40,9 @@
    @Autowired
    private TokenService tokenService;
    @Autowired
    private ISysDeptService deptService;
    /**
     * 登录方法
@@ -75,10 +80,59 @@
            loginUser.setPermissions(permissions);
            tokenService.refreshToken(loginUser);
        }
        // 获取用户所在的分公司信息
        Long branchCompanyId = null;
        String branchCompanyName = null;
        if (user.getDeptId() != null)
        {
            SysDept dept = deptService.selectDeptById(user.getDeptId());
            if (dept != null)
            {
                // 判断当前部门是否就是分公司(parent_id = 100)
                if (dept.getParentId() != null && dept.getParentId() == 100)
                {
                    branchCompanyId = dept.getDeptId();
                    branchCompanyName = dept.getDeptName();
                }
                else if (dept.getAncestors() != null && !dept.getAncestors().isEmpty())
                {
                    // 从 ancestors 解析分公司ID
                    // ancestors 格式:"0,100,分公司ID,子部门ID"
                    String[] ancestorIds = dept.getAncestors().split(",");
                    // 找到100后面的那个ID就是分公司ID
                    for (int i = 0; i < ancestorIds.length; i++)
                    {
                        if ("100".equals(ancestorIds[i]) && i + 1 < ancestorIds.length)
                        {
                            try
                            {
                                Long companyId = Long.parseLong(ancestorIds[i + 1]);
                                SysDept branchCompany = deptService.selectDeptById(companyId);
                                if (branchCompany != null)
                                {
                                    branchCompanyId = branchCompany.getDeptId();
                                    branchCompanyName = branchCompany.getDeptName();
                                }
                            }
                            catch (NumberFormatException e)
                            {
                                // 解析失败,忽略
                            }
                            break;
                        }
                    }
                }
            }
        }
        AjaxResult ajax = AjaxResult.success();
        ajax.put("user", user);
        ajax.put("roles", roles);
        ajax.put("permissions", permissions);
        ajax.put("branchCompanyId", branchCompanyId);
        ajax.put("branchCompanyName", branchCompanyName);
        ajax.put("oaUserId", user.getOaUserId());
        return ajax;
    }