MagicConfigController.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package org.ssssssss.magicapi.controller;
  2. import org.apache.commons.lang3.StringUtils;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.ResponseBody;
  5. import org.ssssssss.magicapi.config.MagicConfiguration;
  6. import org.ssssssss.magicapi.config.MagicDynamicDataSource;
  7. import org.ssssssss.magicapi.model.JsonBean;
  8. import org.ssssssss.magicapi.modules.SQLModule;
  9. import org.ssssssss.magicapi.provider.MagicAPIService;
  10. import org.ssssssss.script.MagicResourceLoader;
  11. import org.ssssssss.script.MagicScriptEngine;
  12. import org.ssssssss.script.ScriptClass;
  13. import java.util.ArrayList;
  14. import java.util.HashMap;
  15. import java.util.List;
  16. import java.util.Map;
  17. public class MagicConfigController extends MagicController {
  18. public MagicConfigController(MagicConfiguration configuration) {
  19. super(configuration);
  20. // 给前端添加代码提示
  21. MagicScriptEngine.addScriptClass(SQLModule.class);
  22. MagicScriptEngine.addScriptClass(MagicAPIService.class);
  23. }
  24. /**
  25. * 获取所有class
  26. */
  27. @RequestMapping("/classes")
  28. @ResponseBody
  29. public JsonBean<Map<String, Object>> classes() {
  30. Map<String, ScriptClass> classMap = MagicScriptEngine.getScriptClassMap();
  31. classMap.putAll(MagicResourceLoader.getModules());
  32. ScriptClass db = classMap.get(SQLModule.class.getName());
  33. MagicDynamicDataSource datasource = configuration.getMagicDynamicDataSource();
  34. if (db != null && datasource != null) {
  35. List<ScriptClass.ScriptAttribute> attributes = new ArrayList<>();
  36. // 给与前台动态数据源提示
  37. datasource.datasources().stream().filter(StringUtils::isNotBlank)
  38. .forEach(item -> attributes.add(new ScriptClass.ScriptAttribute("db", item)));
  39. db.setAttributes(attributes);
  40. }
  41. Map<String, Object> values = new HashMap<>();
  42. values.put("classes", classMap);
  43. values.put("extensions", MagicScriptEngine.getExtensionScriptClass());
  44. values.put("functions", MagicScriptEngine.getFunctions());
  45. return new JsonBean<>(values);
  46. }
  47. /**
  48. * 获取单个class
  49. *
  50. * @param className 类名
  51. */
  52. @RequestMapping("/class")
  53. @ResponseBody
  54. public JsonBean<List<ScriptClass>> clazz(String className) {
  55. return new JsonBean<>(MagicScriptEngine.getScriptClass(className));
  56. }
  57. }