From 656d6f8029f8bf9b2daa9dcc89101a879a70b860 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期三, 03 十二月 2025 23:10:05 +0800
Subject: [PATCH] feat:优先添加执行人
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java | 162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 162 insertions(+), 0 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index c0d4981..4bef3fb 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -2,6 +2,8 @@
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;
@@ -9,6 +11,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,7 +20,10 @@
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;
/**
* 鐧诲綍楠岃瘉
@@ -31,6 +37,8 @@
private SysLoginService loginService;
@Autowired
+ private ISysUserService userService;
+ @Autowired
private ISysMenuService menuService;
@Autowired
@@ -38,6 +46,90 @@
@Autowired
private TokenService tokenService;
+
+ @Autowired
+ private ISysDeptService deptService;
+
+ @Autowired
+ private WechatLoginService wechatLogin;
+
+ /**
+ * 寰俊涓�閿櫥褰� - 閫氳繃OpenID鍜孶nionID鐧诲綍
+ * 浣跨敤WechatLoginService杩涜璁よ瘉
+ *
+ * @param requestBody 鍖呭惈openId鍜寀nionId鐨勮姹備綋
+ * @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)鍜宲honeCode(鎵嬫満鍙锋巿鏉僣ode)
+ * @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("缂哄皯鎵嬫満鍙锋巿鏉僣ode");
+ }
+
+ 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());
+ }
+ }
/**
* 鐧诲綍鏂规硶
@@ -66,6 +158,26 @@
{
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);
// 鏉冮檺闆嗗悎
@@ -75,10 +187,60 @@
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 瑙f瀽鍒嗗叕鍙窱D
+ // ancestors 鏍煎紡锛�"0,100,鍒嗗叕鍙窱D,瀛愰儴闂↖D"
+ String[] ancestorIds = dept.getAncestors().split(",");
+ // 鎵惧埌100鍚庨潰鐨勯偅涓狪D灏辨槸鍒嗗叕鍙窱D
+ 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)
+ {
+ // 瑙f瀽澶辫触锛屽拷鐣�
+ }
+ 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;
}
--
Gitblit v1.9.1