| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | |
| | | @Autowired |
| | | private TokenService tokenService; |
| | | |
| | | @Autowired |
| | | private ISysDeptService deptService; |
| | | |
| | | /** |
| | | * 登录方法 |
| | |
| | | { |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | SysUser user = loginUser.getUser(); |
| | | // 计算可管理分公司列表(基于 OA_OrderClass 与 sys_dept.service/dispatch_order_class) |
| | | java.util.List<SysDept> branchCompanies = new java.util.ArrayList<>(); |
| | | java.util.Set<Long> seen = new java.util.HashSet<>(); |
| | | if (com.ruoyi.common.utils.StringUtils.isNotEmpty(user.getOaOrderClass())) { |
| | | String[] codes = user.getOaOrderClass().split(","); |
| | | for (String raw : codes) { |
| | | String code = raw.trim(); |
| | | if (code.isEmpty()) continue; |
| | | SysDept cond1 = new SysDept(); |
| | | cond1.setParentId(100L); |
| | | cond1.setServiceOrderClass(code); |
| | | java.util.List<SysDept> list1 = deptService.selectDeptList(cond1); |
| | | for (SysDept d : list1) { if (seen.add(d.getDeptId())) branchCompanies.add(d); } |
| | | SysDept cond2 = new SysDept(); |
| | | cond2.setParentId(100L); |
| | | cond2.setDispatchOrderClass(code); |
| | | java.util.List<SysDept> list2 = deptService.selectDeptList(cond2); |
| | | for (SysDept d : list2) { if (seen.add(d.getDeptId())) branchCompanies.add(d); } |
| | | } |
| | | } |
| | | // 角色集合 |
| | | Set<String> roles = permissionService.getRolePermission(user); |
| | | // 权限集合 |
| | |
| | | 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("branchCompanies", branchCompanies); |
| | | ajax.put("oaUserId", user.getOaUserId()); |
| | | return ajax; |
| | | } |
| | | |