From 59fa24b83e7c77b0a5663b1a5452549457fadbdd Mon Sep 17 00:00:00 2001 From: "liu.zixi" Date: Thu, 20 Nov 2025 16:08:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AF=BE=E7=A8=8B=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E4=BA=86=E2=80=9C=E6=9F=A5=E7=9C=8B=E7=BD=AE=E9=A1=B6=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E5=88=97=E8=A1=A8=E2=80=9D=E3=80=81=E2=80=9C=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E7=BD=AE=E9=A1=B6=E2=80=9D=E3=80=81=E2=80=9C=E7=BD=AE?= =?UTF-8?q?=E9=A1=B6=E6=8E=92=E5=BA=8F=E2=80=9D=E3=80=81=E2=80=9C=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E8=AF=BE=E7=A8=8B=E5=88=97=E8=A1=A8=E2=80=9Dapi?= =?UTF-8?q?=E5=B1=82=E3=80=81service=E5=B1=82=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/course/api/CourseManageApi.java | 59 ++++++++++++++++--- .../course/service/ICoursePageService.java | 7 +++ .../service/impl/CoursePageServiceImpl.java | 34 ++++++++++- 3 files changed, 90 insertions(+), 10 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java index 62817fdc..4e59efc0 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java @@ -17,6 +17,7 @@ import com.xboe.module.course.service.*; import com.xboe.module.course.vo.CoursePageVo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.parameters.P; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -110,16 +111,53 @@ public class CourseManageApi extends ApiBaseController{ */ @PostMapping("/page") public JsonResponse> managePage(@RequestBody CoursePageQueryDTO coursePageQueryDTO) { - // 处理入参逻辑 - if (coursePageQueryDTO.getLearningTimeStart() == null || coursePageQueryDTO.getLearningTimeEnd() == null) { - return badRequest("请指定正确的培训时间选择范围"); - } // 管理端查询时不需要传入当前用户信息 return success(coursePageService.pageQuery(null, coursePageQueryDTO)); } + /** + * 当前用户是否在管理端显示置顶相关功能 + * @return + */ + @GetMapping("/show-settop") + public JsonResponse showSetTop() { + CurrentUser currentUser = getCurrent(); + return success(coursePageService.showSetTop(currentUser)); + } + + /** + * 新-管理端 置顶课程列表 + * @return + */ + @GetMapping("/topList") + public JsonResponse> topList() { + return success(coursePageService.topList()); + } + + /** + * 新-管理端 置顶课程列表排序修改 + * 对整个置顶列表进行重排序 + * @param changedList + * @return + */ + @PostMapping("/top-sortchange") + public JsonResponse> topListSortChange(@RequestBody List changedList) { + ServiceResponse> serviceResponse = coursePageService.topListSortChange(changedList); + if (serviceResponse.isSuccess()) { + return error(serviceResponse.getMessage()); + } + return success(serviceResponse.getData()); + } + + /** + * 新-管理端 课程列表导出 + * @param coursePageQueryDTO + * @param response + */ @GetMapping("/export") - public void manageExport() {} + public void manageExport(CoursePageQueryDTO coursePageQueryDTO, HttpServletResponse response) { + coursePageService.exportCourseList(coursePageQueryDTO, response); + } /** * 管理列表的查询 @@ -873,6 +911,7 @@ public class CourseManageApi extends ApiBaseController{ */ @PostMapping("/top") public JsonResponse setTop(String ids,String title, Boolean top){ + // lzx:这个ids实际上只有一个id。。。 if(StringUtils.isBlank(ids)){ return badRequest("参数错误"); } @@ -881,8 +920,14 @@ public class CourseManageApi extends ApiBaseController{ } try { - courseService.setTop(ids, top,getCurrent().getAccountId(), title,""); - return success(true); +// courseService.setTop(ids, top,getCurrent().getAccountId(), title,""); +// return success(true); + // 调整置顶逻辑 + ServiceResponse serviceResponse = coursePageService.top(ids, top); + if (!serviceResponse.isSuccess()) { + return error(serviceResponse.getMessage()); + } + return success(serviceResponse.getData()); } catch (Exception e) { log.error("课程设置置顶错误",e); return error("设置置顶失败",e.getMessage(),false); diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICoursePageService.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICoursePageService.java index f0cb2ee2..81272dbe 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICoursePageService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICoursePageService.java @@ -20,6 +20,13 @@ public interface ICoursePageService { */ PageList pageQuery(CurrentUser currentUser, CoursePageQueryDTO coursePageQueryDTO); + /** + * 当前用户是否展示置顶相关功能 + * @param currentUser + * @return + */ + boolean showSetTop(CurrentUser currentUser); + /** * 置顶列表 * @return diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CoursePageServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CoursePageServiceImpl.java index 06d87e07..cfe10c39 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CoursePageServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CoursePageServiceImpl.java @@ -6,6 +6,7 @@ import com.xboe.core.CurrentUser; import com.xboe.core.orm.FieldFilters; import com.xboe.core.orm.IFieldFilter; import com.xboe.core.orm.QueryBuilder; +import com.xboe.core.orm.UpdateBuilder; import com.xboe.data.dto.UserOrgIds; import com.xboe.data.outside.IOutSideDataService; import com.xboe.module.course.dao.CourseDao; @@ -14,6 +15,7 @@ import com.xboe.module.course.dto.CoursePageQueryDTO; import com.xboe.module.course.dto.ServiceResponse; import com.xboe.module.course.entity.Course; import com.xboe.module.course.entity.CourseTeacher; +import com.xboe.module.course.service.ICourseFullTextSearch; import com.xboe.module.course.service.ICoursePageService; import com.xboe.module.course.vo.CoursePageVo; import lombok.extern.slf4j.Slf4j; @@ -23,6 +25,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -40,6 +43,12 @@ public class CoursePageServiceImpl implements ICoursePageService { @Autowired private IOutSideDataService outSideDataService; + @Autowired(required = false) + private ICourseFullTextSearch fullTextSearch; + + @Resource + private PublishCourseUtil publishUtil; + @Override public PageList pageQuery(CurrentUser currentUser, CoursePageQueryDTO coursePageQueryDTO) { /* @@ -115,6 +124,14 @@ public class CoursePageServiceImpl implements ICoursePageService { return result; } + @Override + public boolean showSetTop(CurrentUser currentUser) { + UserOrgIds userOrgIds = outSideDataService.getOrgIds(); + + return userOrgIds.getPermissions().containsKey(UserOrgIds.IsSystemAdminKey) + && userOrgIds.getPermissions().get(UserOrgIds.IsSystemAdminKey); + } + @Override public List topList() { // 构建查询条件 @@ -153,8 +170,9 @@ public class CoursePageServiceImpl implements ICoursePageService { return ServiceResponse.failure("最多只能置顶10个课程"); } // 2.3 设置置顶 - course.setIsTop(true); - courseDao.update(course); + courseDao.updateMultiFieldById(courseId, + UpdateBuilder.create("isTop", top), + UpdateBuilder.create("topTime", LocalDateTime.now())); } else { // 3. 取消置顶 // 3.1 课程是否已置顶 @@ -164,7 +182,17 @@ public class CoursePageServiceImpl implements ICoursePageService { // 3.2 取消置顶 course.setIsTop(false); course.setSortWeight(9999); - courseDao.update(course); + courseDao.updateMultiFieldById(courseId, + UpdateBuilder.create("isTop", top), + UpdateBuilder.create("topTime", null), + UpdateBuilder.create("sortWeight", 9999)); + } + // ES同步 + if (this.fullTextSearch != null) { + Object fullId = courseDao.findField("fullTextId", FieldFilters.eq("id", courseId)); + if (fullId != null) { + publishUtil.updateFieldByDocId((String) fullId, "isTop", top ? 1 : 0); + } } return ServiceResponse.success(true); }