无关风月
2024-09-10 26249d6bda4001cbba8c276a089eb6514f4cf29a
课程代码
9个文件已修改
130 ■■■■ 已修改文件
xinquan-api/xinquan-api-course/src/main/java/com/xinquan/course/api/domain/Course.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientTutorSpecialColumnController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/domain/vo/ClientCourseVO.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/service/impl/OrderServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserCourseController.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/AppUserService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}
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("获取用户信息失败。");
            }
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);
    /**
     * 获取未注销的用户信息
     *
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);
    }
    /**
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;
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;
}
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;
    /**
     * 创建待支付订单
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);
    }
}
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> {
    /**
     * 获取用户信息
     *