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