2 コミット bbc01c8d9a ... 3027e67a71

作者 SHA1 メッセージ 日付
  malk 3027e67a71 test(integration): dev/test profile 联调入口 INTPTestController 1 週間 前
  malk 477207517c chore(mjava-mcli): prod.yml.example 补 aliwork 段对齐 dev profile 1 週間 前
共有2 個のファイルを変更した84 個の追加0 個の削除を含む
  1. 5 0
      mjava-mcli/src/main/resources/application-prod.yml.example
  2. 79 0
      mjava/src/main/java/com/malk/test/INTPTestController.java

+ 5 - 0
mjava-mcli/src/main/resources/application-prod.yml.example

@@ -36,6 +36,11 @@ dingtalk:
   token: ${DINGTALK_TOKEN}
   operator: ${DINGTALK_OPERATOR}
 
+# aliwork
+aliwork:
+  appType: ${ALIWORK_APP_TYPE}
+  systemToken: ${ALIWORK_SYSTEM_TOKEN}
+
 # integration(IAM 集成平台)
 integration:
   baseUrl: ${INTP_BASE_URL}        # 不含 /iam 路径前缀

+ 79 - 0
mjava/src/main/java/com/malk/test/INTPTestController.java

@@ -0,0 +1,79 @@
+package com.malk.test;
+
+import com.malk.server.common.McR;
+import com.malk.service.integration.INTPClient_User;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Profile;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 集成平台(IAM)联调入口
+ * <p>
+ * 仅 dev/test profile 暴露,生产无此端点。凭据通过 {@code application-*.yml} 的
+ * {@code integration.baseUrl / clientId / clientSecret} 注入;首调用前需保证
+ * 环境变量 {@code INTP_BASE_URL / INTP_CLIENT_ID / INTP_CLIENT_SECRET} 已设置。
+ * <p>
+ * access_token 由 {@link INTPClient_User#getAccessToken()} 内部缓存,业务端点不要求传入。
+ * <p>
+ * 端点清单:
+ * <ul>
+ *   <li>GET  {@code /test/intp/token}                — 取 token(缓存命中返回同值)</li>
+ *   <li>POST {@code /test/intp/users}                — 创建用户,body: {username, password, body_ext?}</li>
+ *   <li>PATCH {@code /test/intp/users/{username}}    — 修改用户,body: 字段 Map</li>
+ *   <li>POST {@code /test/intp/users/delete}         — 批量删除,body: {usernames: [...]}</li>
+ *   <li>GET  {@code /test/intp/users}                — 列表查询,query param 透传</li>
+ * </ul>
+ */
+@Slf4j
+@Profile({"dev", "test"})
+@RestController
+@RequestMapping("/test/intp")
+public class INTPTestController {
+
+    @Autowired
+    private INTPClient_User intpClientUser;
+
+    @GetMapping("token")
+    McR<String> token() {
+        String token = intpClientUser.getAccessToken();
+        log.info("intp token len={}", token == null ? 0 : token.length());
+        return McR.success(token);
+    }
+
+    @PostMapping("users")
+    McR<Map> createUser(@RequestBody Map<String, Object> body) {
+        String token = intpClientUser.getAccessToken();
+        String username = (String) body.get("username");
+        String password = (String) body.get("password");
+        Map bodyExt = (Map) body.get("body_ext");
+        Map data = intpClientUser.createUser(token, username, password, bodyExt);
+        return McR.success(data);
+    }
+
+    @PatchMapping("users/{username}")
+    McR<Boolean> updateUser(@PathVariable("username") String username,
+                            @RequestBody Map<String, Object> bodyExt) {
+        String token = intpClientUser.getAccessToken();
+        Boolean ok = intpClientUser.updateUser(token, username, bodyExt);
+        return McR.success(ok);
+    }
+
+    @PostMapping("users/delete")
+    McR<Boolean> deleteUsers(@RequestBody Map<String, Object> body) {
+        String token = intpClientUser.getAccessToken();
+        List<String> usernames = (List<String>) body.get("usernames");
+        Boolean ok = intpClientUser.deleteUsers(token, usernames);
+        return McR.success(ok);
+    }
+
+    @GetMapping("users")
+    McR<Map> queryUsers(@RequestParam Map<String, Object> query) {
+        String token = intpClientUser.getAccessToken();
+        Map data = intpClientUser.queryUsers(token, query);
+        return McR.success(data);
+    }
+}