| | |
| | | |
| | | import java.util.List; |
| | | import java.util.Set; |
| | | |
| | | import com.ruoyi.system.service.ISysUserService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | |
| | | import com.ruoyi.framework.web.service.SysLoginService; |
| | | import com.ruoyi.framework.web.service.SysPermissionService; |
| | | import com.ruoyi.framework.web.service.TokenService; |
| | | import com.ruoyi.framework.web.service.WechatLoginService; |
| | | import com.ruoyi.system.service.ISysDeptService; |
| | | import com.ruoyi.system.service.ISysMenuService; |
| | | import com.ruoyi.common.annotation.Anonymous; |
| | | |
| | | /** |
| | | * 登录验证 |
| | |
| | | private SysLoginService loginService; |
| | | |
| | | @Autowired |
| | | private ISysUserService userService; |
| | | @Autowired |
| | | private ISysMenuService menuService; |
| | | |
| | | @Autowired |
| | |
| | | |
| | | @Autowired |
| | | private ISysDeptService deptService; |
| | | |
| | | @Autowired |
| | | private WechatLoginService wechatLogin; |
| | | |
| | | /** |
| | | * 微信一键登录 - 通过OpenID和UnionID登录 |
| | | * 使用WechatLoginService进行认证 |
| | | * |
| | | * @param requestBody 包含openId和unionId的请求体 |
| | | * @return 结果 |
| | | */ |
| | | @Anonymous |
| | | @PostMapping("/wechat/login/openid") |
| | | public AjaxResult loginByOpenId(@RequestBody java.util.Map<String, Object> requestBody) |
| | | { |
| | | String openId = (String) requestBody.get("openId"); |
| | | String unionId = (String) requestBody.get("unionId"); |
| | | |
| | | if (com.ruoyi.common.utils.StringUtils.isEmpty(openId)) |
| | | { |
| | | return AjaxResult.error("缺少openId参数"); |
| | | } |
| | | |
| | | try |
| | | { |
| | | // 调用WechatLoginService进行认证 |
| | | String token = wechatLogin.loginByOpenId(openId, unionId); |
| | | |
| | | AjaxResult ajax = AjaxResult.success("登录成功"); |
| | | ajax.put(Constants.TOKEN, token); |
| | | return ajax; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | return AjaxResult.error(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 微信手机号登录(推荐使用) |
| | | * |
| | | * @param requestBody 包含loginCode(微信登录code)和phoneCode(手机号授权code) |
| | | * @return 结果 |
| | | */ |
| | | @Anonymous |
| | | @PostMapping("/wechat/login/phone") |
| | | public AjaxResult loginByWechatPhone(@RequestBody java.util.Map<String, Object> requestBody) |
| | | { |
| | | String loginCode = (String) requestBody.get("loginCode"); |
| | | String phoneCode = (String) requestBody.get("phoneCode"); |
| | | |
| | | if (com.ruoyi.common.utils.StringUtils.isEmpty(loginCode)) |
| | | { |
| | | return AjaxResult.error("缺少微信登录code"); |
| | | } |
| | | |
| | | if (com.ruoyi.common.utils.StringUtils.isEmpty(phoneCode)) |
| | | { |
| | | return AjaxResult.error("缺少手机号授权code"); |
| | | } |
| | | |
| | | try |
| | | { |
| | | // 调用WechatLoginService进行认证 |
| | | java.util.Map<String, Object> loginResult = wechatLogin.loginByWechatPhone(loginCode, phoneCode); |
| | | |
| | | AjaxResult ajax = AjaxResult.success("登录成功"); |
| | | ajax.put(Constants.TOKEN, loginResult.get("token")); |
| | | ajax.put("openId", loginResult.get("openId")); |
| | | if (loginResult.containsKey("unionId")) |
| | | { |
| | | ajax.put("unionId", loginResult.get("unionId")); |
| | | } |
| | | return ajax; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | return AjaxResult.error(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 登录方法 |
| | |
| | | { |
| | | 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); |
| | | // 权限集合 |
| | |
| | | ajax.put("permissions", permissions); |
| | | ajax.put("branchCompanyId", branchCompanyId); |
| | | ajax.put("branchCompanyName", branchCompanyName); |
| | | ajax.put("branchCompanies", branchCompanies); |
| | | ajax.put("oaUserId", user.getOaUserId()); |
| | | return ajax; |
| | | } |