diff --git a/src/main/java/xyz/playedu/api/checks/AppConfigCheck.java b/src/main/java/xyz/playedu/api/checks/AppConfigCheck.java index 84d2541..f0ba8bf 100644 --- a/src/main/java/xyz/playedu/api/checks/AppConfigCheck.java +++ b/src/main/java/xyz/playedu/api/checks/AppConfigCheck.java @@ -10,6 +10,7 @@ import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; import xyz.playedu.api.constant.BackendConstant; +import xyz.playedu.api.constant.CConfig; import xyz.playedu.api.domain.AppConfig; import xyz.playedu.api.service.AppConfigService; @@ -35,7 +36,7 @@ public class AppConfigCheck implements ApplicationRunner { setName("网站名"); setSort(10); setFieldType(BackendConstant.APP_CONFIG_FIELD_TYPE_INPUT); - setKeyName("system.name"); + setKeyName(CConfig.SYSTEM_NAME); setKeyValue(""); setHelp("请输入网站名"); } @@ -45,7 +46,7 @@ public class AppConfigCheck implements ApplicationRunner { setName("Logo"); setSort(20); setFieldType(BackendConstant.APP_CONFIG_FIELD_TYPE_IMAGE); - setKeyName("system.logo"); + setKeyName(CConfig.SYSTEM_LOGO); setKeyValue(""); } }, @@ -54,7 +55,7 @@ public class AppConfigCheck implements ApplicationRunner { setName("API访问地址"); setSort(30); setFieldType(BackendConstant.APP_CONFIG_FIELD_TYPE_INPUT); - setKeyName("system.api_url"); + setKeyName(CConfig.SYSTEM_API_URL); setKeyValue(""); setHelp("请输入API访问地址"); } @@ -64,7 +65,7 @@ public class AppConfigCheck implements ApplicationRunner { setName("PC端口访问地址"); setSort(40); setFieldType(BackendConstant.APP_CONFIG_FIELD_TYPE_INPUT); - setKeyName("system.pc_url"); + setKeyName(CConfig.SYSTEM_PC_URL); setKeyValue(""); setHelp("请输入PC端访问地址"); } @@ -74,7 +75,7 @@ public class AppConfigCheck implements ApplicationRunner { setName("H5端口访问地址"); setSort(50); setFieldType(BackendConstant.APP_CONFIG_FIELD_TYPE_INPUT); - setKeyName("system.h5_url"); + setKeyName(CConfig.SYSTEM_H5_URL); setKeyValue(""); setHelp("请输入H5端访问地址"); } @@ -143,6 +144,19 @@ public class AppConfigCheck implements ApplicationRunner { } }, }); + put( + "学员配置", + new AppConfig[] { + new AppConfig() { + { + setName("默认头像"); + setSort(10); + setFieldType(BackendConstant.APP_CONFIG_FIELD_TYPE_IMAGE); + setKeyName(CConfig.MEMBER_DEFAULT_AVATAR); + setKeyValue(""); + } + }, + }); } }; diff --git a/src/main/java/xyz/playedu/api/constant/CConfig.java b/src/main/java/xyz/playedu/api/constant/CConfig.java new file mode 100644 index 0000000..f3bb250 --- /dev/null +++ b/src/main/java/xyz/playedu/api/constant/CConfig.java @@ -0,0 +1,21 @@ +/** + * This file is part of the PlayEdu. + * (c) 杭州白书科技有限公司 + */ +package xyz.playedu.api.constant; + +/** + * @Author 杭州白书科技有限公司 + * + * @create 2023/4/11 10:12 + */ +public class CConfig { + + public static final String SYSTEM_NAME = "system.name"; + public static final String SYSTEM_LOGO = "system.logo"; + public static final String SYSTEM_API_URL = "system.api_url"; + public static final String SYSTEM_PC_URL = "system.pc_url"; + public static final String SYSTEM_H5_URL = "system.h5_url"; + + public static final String MEMBER_DEFAULT_AVATAR = "member.default_avatar"; +} diff --git a/src/main/java/xyz/playedu/api/controller/backend/SystemController.java b/src/main/java/xyz/playedu/api/controller/backend/SystemController.java index 133171f..0ed73d9 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/SystemController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/SystemController.java @@ -4,22 +4,29 @@ */ package xyz.playedu.api.controller.backend; +import lombok.extern.slf4j.Slf4j; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import xyz.playedu.api.BCtx; +import xyz.playedu.api.constant.CConfig; import xyz.playedu.api.service.ImageCaptchaService; import xyz.playedu.api.types.ImageCaptchaResult; import xyz.playedu.api.types.JsonResponse; +import xyz.playedu.api.util.RequestUtil; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @RestController @RequestMapping("/backend/v1/system") +@Slf4j public class SystemController { @Autowired private ImageCaptchaService imageCaptchaService; @@ -37,7 +44,34 @@ public class SystemController { @GetMapping("/config") public JsonResponse config() { - Map data = BCtx.getConfig(); + Map configData = BCtx.getConfig(); + + String apiUrl = configData.get(CConfig.SYSTEM_API_URL); + if (apiUrl == null || apiUrl.trim().length() == 0) { + apiUrl = RequestUtil.uriWithProtocol(); + } + + HashMap data = new HashMap<>(); + + data.put(CConfig.SYSTEM_NAME, configData.get(CConfig.SYSTEM_NAME)); + data.put(CConfig.SYSTEM_LOGO, configData.get(CConfig.SYSTEM_LOGO)); + data.put(CConfig.SYSTEM_API_URL, apiUrl); + data.put(CConfig.SYSTEM_PC_URL, configData.get(CConfig.SYSTEM_PC_URL)); + data.put(CConfig.SYSTEM_H5_URL, configData.get(CConfig.SYSTEM_H5_URL)); + + // 学员的默认头像 + String memberDefaultAvatar = configData.get(CConfig.MEMBER_DEFAULT_AVATAR); + if (memberDefaultAvatar == null || memberDefaultAvatar.trim().length() == 0) { + data.put(CConfig.MEMBER_DEFAULT_AVATAR, apiUrl + "/images/default_avatar.png"); + } + + // 内置的三个线上课封面 + List defaultCourseThumbs = new ArrayList<>(); + defaultCourseThumbs.add(apiUrl + "/images/courses/thumb1.png"); + defaultCourseThumbs.add(apiUrl + "/images/courses/thumb2.png"); + defaultCourseThumbs.add(apiUrl + "/images/courses/thumb3.png"); + data.put("default_course_thumbs", defaultCourseThumbs); + return JsonResponse.data(data); } } diff --git a/src/main/java/xyz/playedu/api/controller/frontend/SystemController.java b/src/main/java/xyz/playedu/api/controller/frontend/SystemController.java index 3191090..8d0d3e5 100644 --- a/src/main/java/xyz/playedu/api/controller/frontend/SystemController.java +++ b/src/main/java/xyz/playedu/api/controller/frontend/SystemController.java @@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import xyz.playedu.api.constant.CConfig; import xyz.playedu.api.service.AppConfigService; import xyz.playedu.api.service.ImageCaptchaService; import xyz.playedu.api.types.ImageCaptchaResult; @@ -37,11 +38,11 @@ public class SystemController { HashMap data = new HashMap<>(); - data.put("system-name", configs.get("system.name")); - data.put("system-logo", configs.get("system.logo")); - data.put("system-api-url", configs.get("system.api_url")); - data.put("system-pc-url", configs.get("system.pc_url")); - data.put("system-h5-url", configs.get("system.h5_url")); + data.put("system-name", configs.get(CConfig.SYSTEM_NAME)); + data.put("system-logo", configs.get(CConfig.SYSTEM_LOGO)); + data.put("system-api-url", configs.get(CConfig.SYSTEM_API_URL)); + data.put("system-pc-url", configs.get(CConfig.SYSTEM_PC_URL)); + data.put("system-h5-url", configs.get(CConfig.SYSTEM_H5_URL)); data.put("system-pc-index-footer-msg", configs.get("system.pc_index_footer_msg")); data.put("player-poster", configs.get("player.poster")); diff --git a/src/main/java/xyz/playedu/api/util/RequestUtil.java b/src/main/java/xyz/playedu/api/util/RequestUtil.java index d9de370..51e7b8d 100644 --- a/src/main/java/xyz/playedu/api/util/RequestUtil.java +++ b/src/main/java/xyz/playedu/api/util/RequestUtil.java @@ -54,6 +54,13 @@ public class RequestUtil { + (Arrays.asList(443, 80, 0).contains(portNumber) ? "" : ":" + portNumber); } + public static String uriWithProtocol() { + Integer portNumber = port(); + return RequestUtil.protocol() + + RequestUtil.domain() + + (Arrays.asList(443, 80, 0).contains(portNumber) ? "" : ":" + portNumber); + } + public static String pathname() { HttpServletRequest request = RequestUtil.handler(); return request == null ? "" : request.getRequestURI(); @@ -74,4 +81,15 @@ public class RequestUtil { } return null; } + + public static String protocol() { + HttpServletRequest request = RequestUtil.handler(); + if (request != null) { + String requestUrl = request.getRequestURL().toString(); + List urls = Arrays.asList(requestUrl.split("//")); + + return urls.get(0) + "//"; + } + return null; + } } diff --git a/src/main/resources/static/images/courses/thumb1.png b/src/main/resources/static/images/courses/thumb1.png new file mode 100644 index 0000000..4ab2fa7 Binary files /dev/null and b/src/main/resources/static/images/courses/thumb1.png differ diff --git a/src/main/resources/static/images/courses/thumb2.png b/src/main/resources/static/images/courses/thumb2.png new file mode 100644 index 0000000..db98d3c Binary files /dev/null and b/src/main/resources/static/images/courses/thumb2.png differ diff --git a/src/main/resources/static/images/courses/thumb3.png b/src/main/resources/static/images/courses/thumb3.png new file mode 100644 index 0000000..0fb0405 Binary files /dev/null and b/src/main/resources/static/images/courses/thumb3.png differ diff --git a/src/main/resources/static/images/default_avatar.png b/src/main/resources/static/images/default_avatar.png new file mode 100644 index 0000000..8d157b7 Binary files /dev/null and b/src/main/resources/static/images/default_avatar.png differ