caozixuan 1 год назад
Родитель
Сommit
06752f065d

+ 42 - 0
sop-api/src/main/java/com/qmth/sop/server/api/SsoController.java

@@ -0,0 +1,42 @@
+package com.qmth.sop.server.api;
+
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.sop.business.entity.SysUser;
+import com.qmth.sop.business.service.SsoService;
+import com.qmth.sop.common.annotation.OperationLog;
+import com.qmth.sop.common.contant.SystemConstant;
+import com.qmth.sop.common.enums.LogTypeEnum;
+import com.qmth.sop.common.util.Result;
+import com.qmth.sop.common.util.ResultUtil;
+import com.qmth.sop.common.util.ServletUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * @Description: 软通智能客服同步控制器
+ * @Author: CaoZixuan
+ * @Date: 2023-11-21
+ */
+@Api(tags = "软通智能客服同步 Controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_SSO)
+public class SsoController {
+    @Resource
+    private SsoService ssoService;
+
+    @ApiOperation(value = "软通智能客服单点登录")
+    @ApiResponses({@ApiResponse(code = 200, message = "软通智能客服单点登录", response = Result.class)})
+    @RequestMapping(value = "/rtzf/login", method = RequestMethod.POST)
+    @OperationLog(logType = LogTypeEnum.UN_KNOW)
+    public Result analysisLogin() {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        return ResultUtil.ok(ssoService.rtzfSsoLogin(requestUser));
+    }
+}

+ 19 - 0
sop-business/src/main/java/com/qmth/sop/business/service/SsoService.java

@@ -0,0 +1,19 @@
+package com.qmth.sop.business.service;
+
+import com.qmth.sop.business.entity.SysUser;
+
+/**
+ * @Description: 单点登录接口
+ * @Author: CaoZixuan
+ * @Date: 2023-11-22
+ */
+public interface SsoService {
+
+    /**
+     * 软通智能客服单点登录
+     *
+     * @param requestUser 请求用户
+     * @return 拼接好的单点登录跳转地址
+     */
+    String rtzfSsoLogin(SysUser requestUser);
+}

+ 36 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/SsoServiceImpl.java

@@ -0,0 +1,36 @@
+package com.qmth.sop.business.service.impl;
+
+import com.qmth.sop.business.entity.SysUser;
+import com.qmth.sop.business.service.SsoService;
+import com.qmth.sop.business.service.SysConfigService;
+import com.qmth.sop.business.sync.RtzfApiUtils;
+import com.qmth.sop.business.sync.been.rtzf.LoginTypeEnum;
+import com.qmth.sop.common.contant.SystemConstant;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.StringJoiner;
+
+/**
+ * @Description: sso单点登录服务实现类
+ * @Author: CaoZixuan
+ * @Date: 2023-11-22
+ */
+@Service
+public class SsoServiceImpl implements SsoService {
+    @Resource
+    private RtzfApiUtils rtzfApiUtils;
+    @Resource
+    private SysConfigService sysConfigService;
+
+    @Override
+    public String rtzfSsoLogin(SysUser requestUser) {
+        String ssoUrl = sysConfigService.findByConfigKey(SystemConstant.RTZF_OSS_LOGIN_URL).getConfigValue();
+        String token = rtzfApiUtils.getRtzfToken(requestUser, LoginTypeEnum.SSO_LOGIN);
+
+        StringJoiner redirectUrlJoiner = new StringJoiner("");
+        redirectUrlJoiner.add(ssoUrl);
+        redirectUrlJoiner.add(SystemConstant.GET_UNKNOWN).add(SystemConstant.SIGNATURE).add(SystemConstant.GET_EQUAL).add(token);
+        return redirectUrlJoiner.toString();
+    }
+}

+ 1 - 1
sop-business/src/main/java/com/qmth/sop/business/sync/RtzfApiUtils.java

@@ -64,7 +64,7 @@ public class RtzfApiUtils {
                     password = defaultPassword;
                     break;
                 case SSO_LOGIN:
-                    account = requestUser.getRealName();
+                    account = String.valueOf(requestUser.getId());
                     password = requestUser.getPassword();
                     break;
             }

+ 2 - 0
sop-common/src/main/java/com/qmth/sop/common/contant/SystemConstant.java

@@ -209,6 +209,7 @@ public class SystemConstant {
     public static final String FXXK_APP_AUTH_URL = "fxxk.app.auth.url";
     public static final String FXXK_USER_BY_MOBILE_URL = "fxxk.user.by.mobile.url";
     public static final String FXXK_CUSTOM_QUERY_URL = "fxxk.custom.query.url";
+    public static final String RTZF_OSS_LOGIN_URL = "rtzf.oss.login.url";
 
     /**
      * api前缀
@@ -250,6 +251,7 @@ public class SystemConstant {
     public static final String PREFIX_URL_DEVICE_IN_OUT = "/admin/device/in/out";
     public static final String PREFIX_URL_SOP = "/admin/sop";
     public static final String PREFIX_URL_FXXK = "/open/fxxk";
+    public static final String PREFIX_URL_SSO = "/sso";
 
     /**
      * 缓存配置