From 26249d6bda4001cbba8c276a089eb6514f4cf29a Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 10 九月 2024 13:41:45 +0800 Subject: [PATCH] 课程代码 --- xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java | 8 +- xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserCourseController.java | 33 ++++++++++ xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/AppUserService.java | 7 ++ xinquan-api/xinquan-api-course/src/main/java/com/xinquan/course/api/domain/Course.java | 5 - xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java | 5 + xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientTutorSpecialColumnController.java | 2 xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java | 45 ++++++++++++++- xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/service/impl/OrderServiceImpl.java | 14 +++- xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/domain/vo/ClientCourseVO.java | 11 +++ 9 files changed, 112 insertions(+), 18 deletions(-) diff --git a/xinquan-api/xinquan-api-course/src/main/java/com/xinquan/course/api/domain/Course.java b/xinquan-api/xinquan-api-course/src/main/java/com/xinquan/course/api/domain/Course.java index 749ffd3..7ceb6c7 100644 --- a/xinquan-api/xinquan-api-course/src/main/java/com/xinquan/course/api/domain/Course.java +++ b/xinquan-api/xinquan-api-course/src/main/java/com/xinquan/course/api/domain/Course.java @@ -4,10 +4,10 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.xinquan.common.core.utils.page.PageDTO; import com.xinquan.common.core.web.domain.BaseModel; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableField; -import com.xinquan.user.api.domain.AppUser; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; @@ -112,7 +112,4 @@ @TableField("latitude") private Double latitude; - @ApiModelProperty(value = "xx人已加入学习") - @TableField(exist = false) - private List<AppUser> listUser; } diff --git a/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java b/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java index 3b20b11..2419983 100644 --- a/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java +++ b/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java @@ -26,6 +26,11 @@ public RemoteAppUserService create(Throwable cause) { return new RemoteAppUserService() { @Override + public R<List<String>> getUserByCourseId(Long courseId) { + return R.fail("查询课程加入学习人数"); + } + + @Override public R<AppUser> getUserByCondition(AppUserDTO dto, String source) { return R.fail("获取用户信息失败。"); } diff --git a/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java b/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java index 5024e8e..b715a68 100644 --- a/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java +++ b/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java @@ -13,10 +13,7 @@ import java.util.Collection; import java.util.List; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; /** * @author mitao @@ -25,6 +22,9 @@ @FeignClient(contextId = "remoteAppUserService", value = ServiceNameConstants.APP_USER_SERVICE, fallbackFactory = RemoteAppUserFallbackFactory.class) public interface RemoteAppUserService { + @GetMapping("/client/app-user-course/getUserByCourseId/{courseId}") + R<List<String>> getUserByCourseId(@PathVariable("courseId") Long courseId); + /** * 获取未注销的用户信息 * diff --git a/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java b/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java index 774b4b8..ed40acf 100644 --- a/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java +++ b/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java @@ -1,21 +1,29 @@ package com.xinquan.course.controller.client; +import com.alibaba.nacos.common.utils.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xinquan.common.core.constant.SecurityConstants; import com.xinquan.common.core.domain.R; +import com.xinquan.common.core.utils.page.BeanUtils; +import com.xinquan.common.core.utils.page.CollUtils; import com.xinquan.common.core.utils.page.PageDTO; -import com.xinquan.course.domain.Course; +import com.xinquan.course.api.domain.Course; +import com.xinquan.course.domain.CourseChapter; import com.xinquan.course.domain.vo.ClientCourseCategoryVO; import com.xinquan.course.domain.vo.ClientCourseVO; import com.xinquan.course.service.CourseCategoryService; +import com.xinquan.course.service.CourseChapterService; import com.xinquan.course.service.CourseService; import com.xinquan.system.api.RemoteBannerService; import com.xinquan.system.api.domain.vo.BannerVO; +import com.xinquan.user.api.feign.RemoteAppUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import java.util.List; +import java.util.Objects; import io.swagger.models.auth.In; import lombok.RequiredArgsConstructor; @@ -24,6 +32,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; /** * <p> @@ -42,6 +52,9 @@ private final CourseCategoryService courseCategoryService; private final CourseService courseService; private final RemoteBannerService remoteBannerService; + private final RemoteAppUserService appUserService; + @Resource + private CourseChapterService courseChapterService; /** * 获取轮播图列表 @@ -81,9 +94,35 @@ */ @GetMapping("/getPayCourseInfoById") @ApiOperation(value = "根据id获取课程详情-付费课程") - public R<Course> getPayCourseInfoById(String id) { + @ApiImplicitParams({ + @ApiImplicitParam(value = "课程id", name = "id", required = true, dataType = "String"), + @ApiImplicitParam(value = "分页参数,当前页码", name = "pageCurr", required = true, dataType = "Integer"), + @ApiImplicitParam(value = "分页参数,每页数量", name = "pageSize", required = true, dataType = "Integer") + }) + public R<ClientCourseVO> getPayCourseInfoById(@RequestParam(value = "id")Long id, + @RequestParam(value = "pageCurr", defaultValue = "1") Integer pageCurr, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) { + Course byId = courseService.getById(id); + ClientCourseVO clientCourseVO = new ClientCourseVO(); + BeanUtils.copyProperties(byId, clientCourseVO); + // 查询章节 + Page<CourseChapter> page = courseChapterService.lambdaQuery() + .eq(CourseChapter::getCourseId, id) + .orderByDesc(CourseChapter::getSortNum) + .page(new Page<>(pageCurr, pageSize)); + if (CollUtils.isEmpty(page.getRecords())) { + PageDTO<CourseChapter> empty = PageDTO.empty(page); + clientCourseVO.setList(empty); + } + // 查询学习人数和头像列表 + List<String> data = appUserService.getUserByCourseId(id).getData(); + if (data!=null){ + clientCourseVO.setCount(data.size()); + } + clientCourseVO.setHeaders(data); + // 查询推荐课程 - return R.ok(courseService.getById(id)); + return R.ok(clientCourseVO); } /** diff --git a/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientTutorSpecialColumnController.java b/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientTutorSpecialColumnController.java index 417eafe..4e59057 100644 --- a/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientTutorSpecialColumnController.java +++ b/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientTutorSpecialColumnController.java @@ -7,7 +7,7 @@ import com.xinquan.common.core.utils.page.BeanUtils; import com.xinquan.common.core.utils.page.CollUtils; import com.xinquan.common.core.utils.page.PageDTO; -import com.xinquan.course.domain.Course; +import com.xinquan.course.api.domain.Course; import com.xinquan.course.domain.TutorSpecialColumn; import com.xinquan.course.domain.TutorSpecialColumnCourse; import com.xinquan.course.domain.vo.ClientCourseVO; diff --git a/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/domain/vo/ClientCourseVO.java b/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/domain/vo/ClientCourseVO.java index f5c5113..b692514 100644 --- a/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/domain/vo/ClientCourseVO.java +++ b/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/domain/vo/ClientCourseVO.java @@ -1,8 +1,12 @@ package com.xinquan.course.domain.vo; +import com.xinquan.common.core.utils.page.PageDTO; +import com.xinquan.course.domain.CourseChapter; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; +import java.util.List; + import lombok.Data; /** @@ -72,4 +76,11 @@ @ApiModelProperty(value = "课程地址纬度") private Double latitude; + @ApiModelProperty(value = "已学习人数") + private Integer count; + @ApiModelProperty(value = "头像列表") + private List<String> headers; + @ApiModelProperty(value = "章节列表") + private PageDTO<CourseChapter> list; + } diff --git a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/service/impl/OrderServiceImpl.java b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/service/impl/OrderServiceImpl.java index 0fa0063..f3ecd59 100644 --- a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/service/impl/OrderServiceImpl.java +++ b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/service/impl/OrderServiceImpl.java @@ -33,6 +33,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; + /** * <p> * 订单表 服务实现类 @@ -45,10 +47,14 @@ @RequiredArgsConstructor public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService { - private final RemoteMeditationService remoteMeditationService; - private final RemoteCourseService remoteCourseService; - private final RemoteAppUserService remoteAppUserService; - private final OrderPaymentRecordService orderPaymentRecordService; + @Resource + private RemoteMeditationService remoteMeditationService; + @Resource + private RemoteCourseService remoteCourseService; + @Resource + private RemoteAppUserService remoteAppUserService; + @Resource + private OrderPaymentRecordService orderPaymentRecordService; /** * 创建待支付订单 diff --git a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserCourseController.java b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserCourseController.java index 18a5730..69d4a53 100644 --- a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserCourseController.java +++ b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserCourseController.java @@ -1,9 +1,18 @@ package com.xinquan.user.controller.client; -import org.springframework.web.bind.annotation.RequestMapping; +import com.xinquan.common.core.domain.R; +import com.xinquan.user.api.domain.AppUser; +import com.xinquan.user.domain.AppUserCourse; +import com.xinquan.user.domain.vo.AppUserVO; +import com.xinquan.user.service.AppUserCourseService; +import com.xinquan.user.service.AppUserService; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; -import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -16,6 +25,26 @@ @RestController @RequestMapping("/client/app-user-course") public class ClientAppUserCourseController { + @Resource + private AppUserService appUserService; + @Resource + private AppUserCourseService appUserCourseService; + + /** + * 远程调用 根据课程id 查询拥有课程的用户 + * + * @return 用户信息 + * @see com.xinquan.user.domain.vo.AppUserVO + */ + @GetMapping("/getUserByCourseId/{courseId}") + public R<List<String>> getUserByCourseId(@PathVariable("courseId") Long courseId) { + List<Long> collect = appUserCourseService.lambdaQuery().eq(AppUserCourse::getCourseId, courseId).list() + .stream().map(AppUserCourse::getAppUserId).collect(Collectors.toList()); + // 批量查询用户头像 + List<String> collect1 = appUserService.lambdaQuery().in(!collect.isEmpty(), AppUser::getId, collect).list() + .stream().map(AppUser::getAvatar).collect(Collectors.toList()); + return R.ok(collect1); + } } diff --git a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/AppUserService.java b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/AppUserService.java index 7e3ea26..110f63a 100644 --- a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/AppUserService.java +++ b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/AppUserService.java @@ -1,6 +1,7 @@ package com.xinquan.user.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.xinquan.common.core.domain.R; import com.xinquan.system.api.model.AppCaptchaBody; import com.xinquan.system.api.model.AppLoginUser; import com.xinquan.system.api.model.AppVerifyCellPhoneBody; @@ -10,6 +11,9 @@ import com.xinquan.user.domain.dto.UserAnswerDTO; import com.xinquan.user.domain.vo.AppUserVO; import com.xinquan.user.domain.vo.TagVO; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + import java.util.List; import java.util.Optional; @@ -22,6 +26,9 @@ * @since 2024-08-21 */ public interface AppUserService extends IService<AppUser> { + + + /** * 获取用户信息 * -- Gitblit v1.7.1