无关风月
2024-11-04 64f7ccb9ef8b5a0618e65cddc14b981c1f108ba3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package com.xinquan.user.controller.client;
 
 
import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.C;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xinquan.common.core.domain.R;
import com.xinquan.common.core.utils.page.CollUtils;
import com.xinquan.common.core.utils.page.PageDTO;
import com.xinquan.common.security.service.TokenService;
import com.xinquan.common.security.utils.SecurityUtils;
import com.xinquan.system.api.domain.AppUser;
import com.xinquan.system.api.domain.AppUserCourse;
import com.xinquan.system.api.domain.vo.AppUserVO;
import com.xinquan.user.service.AppUserCourseService;
import com.xinquan.user.service.AppUserService;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * <p>
 * 用户课程关系表 前端控制器
 * </p>
 *
 * @author mitao
 * @since 2024-08-21
 */
@RestController
@RequestMapping("/client/app-user-course")
public class ClientAppUserCourseController {
    @Resource
    private AppUserService appUserService;
    @Resource
    private AppUserCourseService appUserCourseService;
    /**
     * 远程调用 购买课程后 增加课程与用户关系表
     *
     * @return 用户信息
     * @see AppUserVO
     */
    @GetMapping("/addAppUserCourse/{courseId}/{appUserId}/{orderId}/{giftFlag}")
    public R addAppUserCourse(@PathVariable("courseId") Long courseId,
                               @PathVariable("appUserId") Long appUserId,
                               @PathVariable("orderId") Long orderId,
                               @PathVariable("giftFlag") Integer giftFlag
                               ) {
        AppUserCourse one = appUserCourseService.lambdaQuery().eq(AppUserCourse::getCourseId, courseId)
                .eq(AppUserCourse::getAppUserId, appUserId).one();
 
 
        if (one==null){
            one = new AppUserCourse();
            one.setAppUserId(appUserId);
            one.setCourseId(courseId);
            one.setGiftFlag(giftFlag);
            one.setOrderId(orderId);
            one.setCreateTime(LocalDateTime.now());
            appUserCourseService.save(one);
        }
        return R.ok();
    }
 
    /**
     * 远程调用 根据课程id 查询拥有课程的用户
     *
     * @return 用户信息
     * @see AppUserVO
     */
    @GetMapping("/getUserByCourseId/{courseId}")
    public R<List<AppUser>> getUserByCourseId(@PathVariable("courseId") Long courseId) {
        List<Long> collect = appUserCourseService.lambdaQuery().eq(AppUserCourse::getCourseId, courseId).list()
                .stream().map(AppUserCourse::getAppUserId).collect(Collectors.toList());
        if (collect.isEmpty())collect.add(-1L);
        // 批量查询用户头像
        List<AppUser> collect1 = appUserService.lambdaQuery().in(!collect.isEmpty(), AppUser::getId, collect).list();
        return R.ok(collect1);
    }
    @Autowired
    private TokenService tokenService;
    /**
     * 远程调用 查询当前登录用户已购买课程
     *
     * @return 用户信息
     * @see AppUserVO
     */
    @GetMapping("/getPayCourse/{pageCurr}/{pageSize}/{id}")
    public R<PageDTO<AppUserCourse>> getPayCourse(@PathVariable("pageCurr")Integer pageCurr
            ,@PathVariable("pageSize")Integer pageSize,@PathVariable("id")String id) {
        Page<AppUserCourse> page = appUserCourseService.lambdaQuery()
                .eq(AppUserCourse::getCourseId, id)
                .orderByDesc(AppUserCourse::getCreateTime)
                .page(new Page<>(pageCurr, pageSize));
        if (CollUtils.isEmpty(page.getRecords())) {
            PageDTO<AppUserCourse> empty = PageDTO.empty(page);
            return R.ok(empty);
        }
        PageDTO<AppUserCourse> courseChapterPageDTO = PageDTO.of(page, AppUserCourse.class);
        return R.ok(courseChapterPageDTO);
    }
 
 
 
}