44323
2023-11-27 aa925d851857f50eff0556411366690d9a78a0e5
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
109
110
111
112
113
package com.dsh.course.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.course.entity.*;
import com.dsh.course.feignclient.account.CoachClient;
import com.dsh.course.feignclient.account.model.Coach;
import com.dsh.course.feignclient.other.StoreClient;
import com.dsh.course.feignclient.other.model.Store;
import com.dsh.course.mapper.CoursePackageOrderMapper;
import com.dsh.course.mapper.CoursePackageStudentMapper;
import com.dsh.course.model.vo.RegisterCourseVo;
import com.dsh.course.model.vo.request.CourseOfAfterRequest;
import com.dsh.course.service.ICoursePackageOrderService;
import com.dsh.course.service.ICoursePackageSchedulingService;
import com.dsh.course.service.TCoursePackageService;
import com.dsh.course.util.ToolUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
 
/**
 * @author zhibing.pu
 * @Date 2023/11/25 11:49
 */
@Service
public class CoursePackageOrderServiceImpl extends ServiceImpl<CoursePackageOrderMapper, CoursePackageOrder> implements ICoursePackageOrderService {
 
    @Autowired
    private TCoursePackageService coursePackageService;
 
    @Resource
    private StoreClient storeClient;
 
    @Resource
    private CoachClient coachClient;
 
    @Resource
    private CoursePackageStudentMapper coursePackageStudentMapper;
 
    @Autowired
    private ICoursePackageSchedulingService coursePackageSchedulingService;
 
 
    /**
     * 获取用户已报名课程
     *
     * @param courseTypeId
     * @param appUserId
     * @return
     */
    @Override
    public List<RegisterCourseVo> queryRegisteredCourseList(CourseOfAfterRequest courseTypeId, Integer appUserId) {
        List<RegisterCourseVo> courseVos = new ArrayList<>();
        List<CoursePackageOrder> list = this.list(new QueryWrapper<CoursePackageOrder>().eq("appUserId", appUserId).eq("state", 1));
        for (CoursePackageOrder order : list) {
            TCoursePackage coursePackage = coursePackageService.getById(order.getCoursePackageId());
            Store store = storeClient.queryStoreById(coursePackage.getStoreId());
            RegisterCourseVo registerCourseVo = new RegisterCourseVo();
            // 2.0
            registerCourseVo.setType(coursePackage.getType());
 
            registerCourseVo.setOrderId(order.getId());
            registerCourseVo.setCoursePayId(order.getId());
            registerCourseVo.setCoursePackageId(order.getCoursePackageId());
            registerCourseVo.setCoursePackTypeId(coursePackage.getCoursePackageTypeId());
            registerCourseVo.setPackageImg(coursePackage.getCoverDrawing());
            String storeAndCourse = coursePackage.getName() + "(" + store.getName() + ")";
            registerCourseVo.setCourseNameStore(storeAndCourse);
            // 2.0
            registerCourseVo.setCourseTime(new SimpleDateFormat("yyyy-MM-dd").format(order.getInsertTime()));
            Coach coach = coachClient.queryCoachById(coursePackage.getCoachId());
            registerCourseVo.setCourseTeacher(ToolUtil.isEmpty(coach) ? "" : coach.getName());
            if (coursePackage.getType() == 2) {
                registerCourseVo.setTime(new SimpleDateFormat("yyyy-MM-dd").format(coursePackage.getStartTime()) + "-" + new SimpleDateFormat("yyyy-MM-dd").format(coursePackage.getEndTime()));
            }
            List<CoursePackageStudent> coursePackageStudents = coursePackageStudentMapper.selectList(new QueryWrapper<CoursePackageStudent>()
                    .eq("coursePackageId", coursePackage.getId())
                    .eq("appUserId", appUserId));
 
            List<Long> ids = new ArrayList<>();
            for (CoursePackageStudent coursePackageStudent : coursePackageStudents) {
                ids.add(coursePackageStudent.getCoursePackageSchedulingId());
            }
            List<CoursePackageScheduling> cps = new ArrayList<>();
 
            if (!ids.isEmpty()) {
                cps = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>().in("id", ids));
            }
            Integer counts = 0;
 
            for (CoursePackageScheduling cp : cps) {
                if (cp.getDeductClassHour() != null) {
                    counts = counts + cp.getDeductClassHour();
                }
            }
            if (coursePackageStudents.size() > 0) {
                registerCourseVo.setCourseNums(counts);
            }
            registerCourseVo.setPayStatus(order.getPayStatus());
 
            courseVos.add(registerCourseVo);
        }
        return courseVos;
    }
}