Bladeren bron

门户跳转crm 免登录 回调接口

zhangcl 15 uur geleden
bovenliggende
commit
0d5188324a

+ 1 - 0
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/exception/enums/GlobalErrorCodeConstants.java

@@ -15,6 +15,7 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode;
 public interface GlobalErrorCodeConstants {
 public interface GlobalErrorCodeConstants {
 
 
     ErrorCode SUCCESS = new ErrorCode(0, "成功");
     ErrorCode SUCCESS = new ErrorCode(0, "成功");
+    ErrorCode CRM_SUCCESS = new ErrorCode(200, "成功");
 
 
     // ========== 客户端错误段 ==========
     // ========== 客户端错误段 ==========
 
 

+ 42 - 0
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/CrmResult.java

@@ -0,0 +1,42 @@
+package cn.iocoder.yudao.framework.common.pojo;
+
+import cn.iocoder.yudao.framework.common.exception.ErrorCode;
+import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * crm 免登录接口 回调返回
+ *
+ * @param <T> 数据泛型
+ */
+@Data
+public class CrmResult<T> implements Serializable {
+
+    /**
+     * 错误码
+     *
+     * @see ErrorCode#getCode()
+     */
+    private Integer code;
+    /**
+     * 错误提示,用户可阅读
+     *
+     * @see ErrorCode#getMsg() ()
+     */
+    private Boolean success;
+    /**
+     * 返回数据
+     */
+    private String workCode;
+
+    public static <T> CrmResult<T> crmSuccess(String data) {
+        CrmResult<T> result = new CrmResult<>();
+        result.code = GlobalErrorCodeConstants.CRM_SUCCESS.getCode();
+        result.success = true;
+        result.workCode = data;
+        return result;
+    }
+
+}

+ 9 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.CrmResult;
 import cn.iocoder.yudao.framework.security.config.SecurityProperties;
 import cn.iocoder.yudao.framework.security.config.SecurityProperties;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*;
 import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*;
@@ -38,6 +39,7 @@ import java.util.List;
 import java.util.Set;
 import java.util.Set;
 
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.framework.common.pojo.CrmResult.crmSuccess;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 
 
@@ -203,4 +205,11 @@ public class AuthController {
         return success(authService.pmsSsoToken(reqVO));
         return success(authService.pmsSsoToken(reqVO));
     }
     }
 
 
+    @PostMapping("/getUser")
+    @PermitAll
+    @Operation(summary = "CRM系统根据登录token获取登录人工号 免登录", description = "CRM获取登录人工号")
+    public CrmResult<String> crmGetUser(@RequestBody @Valid AuthCrmLoginReqVO reqVO) {
+        return crmSuccess(authService.crmGetUser(reqVO));
+    }
+
 }
 }

+ 31 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthCrmLoginReqVO.java

@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.system.controller.admin.auth.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotEmpty;
+
+@Schema(description = "管理后台 - 社交绑定登录 Request VO,使用 code 授权码 + 账号密码")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class AuthCrmLoginReqVO {
+
+    @Schema(description = "社交平台的类型,参见 UserSocialTypeEnum 枚举值", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+    private Integer type;
+
+    @Schema(description = "工号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    private String username;
+
+    @Schema(description = "token", requiredMode = Schema.RequiredMode.REQUIRED, example = "9b2ffbc1-7425-4155-9894-9d5c08541d62")
+    @NotEmpty(message = "token不能为空")
+    private String token;
+
+    @Schema(description = "state", requiredMode = Schema.RequiredMode.REQUIRED, example = "9b2ffbc1-7425-4155-9894-9d5c08541d62")
+    private String state;
+
+}

+ 7 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthService.java

@@ -98,4 +98,11 @@ public interface AdminAuthService {
      * @param reqVO 验证码信息
      * @param reqVO 验证码信息
      */
      */
     String pmsSsoToken(AuthOaLoginReqVO reqVO);
     String pmsSsoToken(AuthOaLoginReqVO reqVO);
+
+    /**
+     * 根据登录token获取登录人的工号
+     *
+     * @param reqVO 工号
+     */
+    String crmGetUser(AuthCrmLoginReqVO reqVO);
 }
 }

+ 23 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java

@@ -1,6 +1,8 @@
 package cn.iocoder.yudao.module.system.service.auth;
 package cn.iocoder.yudao.module.system.service.auth;
 
 
+import cn.hutool.core.util.ObjUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
 import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
@@ -382,4 +384,25 @@ public class AdminAuthServiceImpl implements AdminAuthService {
         System.out.println("result token:" + token);
         System.out.println("result token:" + token);
         return token;
         return token;
     }
     }
+
+    @Override
+    public String crmGetUser(AuthCrmLoginReqVO reqVO) {
+        String token = reqVO.getToken();
+        // 根据token 获取当前登录人的信息 userId...
+        OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.checkAccessToken(token);
+        //
+        if (ObjUtil.isEmpty(accessTokenDO)) {
+            return StrUtil.EMPTY;
+        }
+        Long userId = accessTokenDO.getUserId();
+        if (ObjUtil.isEmpty(userId)) {
+            return StrUtil.EMPTY;
+        }
+        AdminUserDO user = userService.getUser(userId);
+        if (ObjUtil.isEmpty(user)) {
+            return StrUtil.EMPTY;
+        }
+        // 查询 userId 对应的员工工号
+        return user.getUsername();
+    }
 }
 }

+ 27 - 2
yudao-server/src/main/resources/application-dev.yaml

@@ -1,5 +1,5 @@
 server:
 server:
-  port: 48080
+  port: 6080
 
 
 --- #################### 数据库相关配置 ####################
 --- #################### 数据库相关配置 ####################
 
 
@@ -60,7 +60,7 @@ spring:
   redis:
   redis:
     host: 127.0.0.1 # 地址
     host: 127.0.0.1 # 地址
     port: 6379 # 端口
     port: 6379 # 端口
-    database: 1 # 数据库索引
+    database: 9 # 数据库索引
     password: 123456 # 密码,建议生产环境开启
     password: 123456 # 密码,建议生产环境开启
 
 
 --- #################### 定时任务相关配置 ####################
 --- #################### 定时任务相关配置 ####################
@@ -234,6 +234,9 @@ xxl:
           path: /logout
           path: /logout
   ### xxl-sso client filter excluded paths, like "/excluded/xpath"?"/excluded/xpath,/excluded/*"
   ### xxl-sso client filter excluded paths, like "/excluded/xpath"?"/excluded/xpath,/excluded/*"
 
 
+portal:
+  code: cc99d802-ce5c-5f62-b037-9a00726e7109
+
 dingtalk:
 dingtalk:
   AGENT_ID: 3687646006  # DeepOil 微应用 agent_id
   AGENT_ID: 3687646006  # DeepOil 微应用 agent_id
   APP_KEY: dingmr9ez0ecgbmscfeb # 钉钉微应用 appkey
   APP_KEY: dingmr9ez0ecgbmscfeb # 钉钉微应用 appkey
@@ -245,3 +248,25 @@ dingtalk:
   URL_GET_USERINFO_BYAUTHCODE: https://oapi.dingtalk.com/topapi/v2/user/getuserinfo # 通过免登授权码获取用户信息 url
   URL_GET_USERINFO_BYAUTHCODE: https://oapi.dingtalk.com/topapi/v2/user/getuserinfo # 通过免登授权码获取用户信息 url
   URL_GET_SEND_MESSAGE: https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2 # 发送钉钉工作消息
   URL_GET_SEND_MESSAGE: https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2 # 发送钉钉工作消息
   URL_GET_USERINFO_BYMOBILE: https://oapi.dingtalk.com/topapi/v2/user/getbymobile # 根据用户手机号获取钉钉用户信息 url
   URL_GET_USERINFO_BYMOBILE: https://oapi.dingtalk.com/topapi/v2/user/getbymobile # 根据用户手机号获取钉钉用户信息 url
+
+oa:
+  secret: d4a44f9d-e5d7-41d5-a582-fc1efcc936c4
+  register: https://yfoa.keruioil.com/api/ec/dev/auth/regist
+  gettoken: https://yfoa.keruioil.com/api/ec/dev/auth/applytoken
+  ssoToken: https://yfoa.keruioil.com/ssologin/getToken
+  outMaintain: https://yfoa.keruioil.com/api/workflow/paService/doCreateRequest
+  companyUrl: https://yfoa.keruioil.com/api/hrm/resful/getHrmsubcompanyWithPage
+  departmentUrl: https://yfoa.keruioil.com/api/hrm/resful/getHrmdepartmentWithPage
+  userUrl: https://yfoa.keruioil.com/api/hrm/resful/getHrmUserInfoWithPage
+  workflowId: "640"
+  requestName: "设备委外维修申请流程"
+  appid: TW
+  cpk: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApmtQUp9M82/z22P7am5owQCknjQnjF4U4ckEh7XVtJVQZrZx7d1lCPfoYrwOKEM4DEV7khW6++4Zv5caJ/9nqPn4QFwCqJWVmCEm9vC1BA6i2yfa4bmTxdR1/oeU/Af9pDFlvv5GC9XyilO7CIKu19Ce50v7aN6h1Tjix+h5Ba8e12XAEpEZk9pFroEYfR4lrecvi1pQOwRw8YzDRC4lhGNOo5Cen1rGjk7dwzzgs4uEv9ZyPZoVJnty5P9JE/ctboEf3x4jbqIliuCRgOyXYsLlp+N282CKcWZ35URkGw2orKyG1U6L1hNoj7kkpvAo8Zagf97SdZ0nYdRBIHv6PQIDAQAB
+  oaSecret: kryfoa20250905@szh
+  user: OAuser
+  userId: cLPEaFs9moW6b3xZMl1kNNWAAo7bp61ZRRTKmpiJUe56hSxQvrC2vWtY5ogj7g5FAnUOlzYjYg9MRktKXcseh/nsvZCQGa3BAlYixlDJruV19y4Omx5dYnqu/qv2rJAqTzUS71sOwuB1M2nKlLVsphw1GF74UhGP4xsjpZP7mC8=
+
+
+pms:
+  secret: cc99d802-ce5c-5f62-b037-9a00726e7109
+  ssoToken: https://iot.deepoil.cc/admin-api/system/auth/ssoLogin/getToken

+ 1 - 0
yudao-server/src/main/resources/application.yaml

@@ -309,6 +309,7 @@ yudao:
     enable: true
     enable: true
     ignore-urls:
     ignore-urls:
       - /jmreport/* # 积木报表,无法携带租户编号
       - /jmreport/* # 积木报表,无法携带租户编号
+      - /admin-api/system/auth/getUser # crm 根据token获取用户工号
     ignore-visit-urls:
     ignore-visit-urls:
       - /admin-api/system/user/profile/**
       - /admin-api/system/user/profile/**
       - /admin-api/system/auth/**
       - /admin-api/system/auth/**