ApiController.java 2.95 KB
package com.topdraw.dockingapi.controller;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.digital.szzz.gateway.sdk.api.GatewaySender;
import com.digital.szzz.gateway.sdk.bean.GatewayResponse;
import com.topdraw.dockingapi.config.EnvConfiguration;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.Map;

/**
 * 对接愉快办接口
 * @author wenxin
 * @version 1.0
 * @date 2024/5/9 下午5:46
 */
@RestController
@Slf4j
@RequestMapping("/api")
@RequiredArgsConstructor
public class ApiController {
    private final EnvConfiguration configuration;

    String url;
    String appId;
    String iv;
    String appKey;
    String appSecretKey;
    String authCode;
    int readTimeout = 1000;
    int connTimeout = 1000;

    @PostConstruct
    public void init() {
        url = configuration.getUrl();
        appId = configuration.getAppId();
        iv = configuration.getAppIv();
        appKey = configuration.getAppKey();
        appSecretKey = configuration.getAppSecret();
        authCode = "";
    }

    /**
     * 获取jsToken
     * @return token信息
     */
    @GetMapping("/js/token")
    public GatewayResponse getJsApiToken() {
        String method = "ykb.app.jsapi.getToken";
        JSONObject param = new JSONObject();
        param.put("appId", appId);
        Map<String, String> headerMap = new HashMap<>();
        return GatewaySender.send(url, appId, method, iv, appKey, appSecretKey, param, authCode, headerMap, readTimeout, connTimeout);
    }

    /**
     * 获取authCode
     * @param userId 用户id
     * @return authCode信息
     */
    @GetMapping("/auth/code")
    public GatewayResponse getAuthCodeByUserId(String userId) {
        String method = "app.ykb.uc.oauth.get";
        JSONObject param = new JSONObject();
        param.put("appId", appId);
        param.put("userId", userId);
        param.put("forceScopes", new JSONArray().fluentAdd("ykb_user_info").fluentAdd("ykb_divide"));
        Map<String, String> headerMap = new HashMap<>();
        return GatewaySender.send(url, appId, method, iv, appKey, appSecretKey, param, authCode, headerMap, readTimeout, connTimeout);
    }

    /**
     * 获取用户脱敏信息
     * @param authCode 认证code
     * @return 用户信息
     */
    @GetMapping("/user/info")
    public GatewayResponse getUserInfoByAuthCode(String authCode) {
        String method = "app.ykb.uc.oauth.userInfo";
        JSONObject param = new JSONObject();
        param.put("authCode", authCode);
        Map<String, String> headerMap = new HashMap<>();
        return GatewaySender.send(url, appId, method, iv, appKey, appSecretKey, param, authCode, headerMap, readTimeout, connTimeout);
    }
}