瀏覽代碼

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into zx_1115_courseware

zouxuan 1 年之前
父節點
當前提交
6344a93f88
共有 56 個文件被更改,包括 2246 次插入189 次删除
  1. 1 1
      cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  2. 108 0
      mec-application/src/main/java/com/ym/mec/student/controller/UserMusicController.java
  3. 87 0
      mec-application/src/main/java/com/ym/mec/student/controller/UserMusicStarController.java
  4. 76 0
      mec-application/src/main/java/com/ym/mec/student/controller/open/OpenUserMusicController.java
  5. 46 0
      mec-application/src/main/java/com/ym/mec/student/controller/open/OpenUserMusicStarController.java
  6. 106 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/UserMusicController.java
  7. 78 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/UserMusicStarController.java
  8. 76 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/open/OpenUserMusicController.java
  9. 29 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/open/OpenUserMusicStarController.java
  10. 5 0
      mec-biz/pom.xml
  11. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMusicCompareRecordDao.java
  12. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  13. 87 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/UserMusic.java
  14. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/UserMusicStar.java
  15. 31 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EUserMusicType.java
  16. 28 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/UserMusicMapper.java
  17. 28 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/UserMusicStarMapper.java
  18. 135 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/UserMusicStarWrapper.java
  19. 222 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/UserMusicWrapper.java
  20. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  21. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicCompareRecordService.java
  22. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicScoreService.java
  23. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysUserService.java
  24. 66 0
      mec-biz/src/main/java/com/ym/mec/biz/service/UserMusicService.java
  25. 63 0
      mec-biz/src/main/java/com/ym/mec/biz/service/UserMusicStarService.java
  26. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java
  27. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  28. 28 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicCompareRecordServiceImpl.java
  29. 17 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreServiceImpl.java
  30. 13 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserServiceImpl.java
  31. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  32. 334 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/UserMusicServiceImpl.java
  33. 229 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/UserMusicStarServiceImpl.java
  34. 4 4
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  35. 1 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleConvert.xml
  36. 81 84
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  37. 16 16
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  38. 11 11
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  39. 1 1
      mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  40. 20 20
      mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml
  41. 1 1
      mec-biz/src/main/resources/config/mybatis/InspectionItemPlanConclusionMapper.xml
  42. 1 1
      mec-biz/src/main/resources/config/mybatis/LiveGroupPlusMapper.xml
  43. 2 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  44. 2 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupTrainPlanMapper.xml
  45. 2 2
      mec-biz/src/main/resources/config/mybatis/OperatingReportNewMapper.xml
  46. 6 6
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  47. 2 2
      mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml
  48. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml
  49. 6 6
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  50. 7 8
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  51. 9 2
      mec-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml
  52. 4 4
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  53. 2 2
      mec-biz/src/main/resources/config/mybatis/TeacherCourseStatisticsMapper.xml
  54. 7 0
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  55. 46 0
      mec-biz/src/main/resources/config/mybatis/UserMusicMapper.xml
  56. 42 0
      mec-biz/src/main/resources/config/mybatis/UserMusicStarMapper.xml

+ 1 - 1
cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -321,7 +321,7 @@
 		LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_ AND cssp.user_id_ = sa.user_id_
 		LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_ AND cssp.user_id_ = sa.user_id_
 		LEFT JOIN teacher_attendance ta on ta.course_schedule_id_ = cs.id_
 		LEFT JOIN teacher_attendance ta on ta.course_schedule_id_ = cs.id_
 		LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
 		LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
-		where cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND csts.user_id_ = #{userId} AND cs.status_ = 'OVER' AND cs.class_date_ BETWEEN #{startTime} AND DATE(NOW())
+		where cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 AND csts.user_id_ = #{userId} AND cs.status_ = 'OVER' AND cs.class_date_ BETWEEN #{startTime} AND DATE(NOW())
 		AND (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0))
 		AND (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0))
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL

+ 108 - 0
mec-application/src/main/java/com/ym/mec/student/controller/UserMusicController.java

@@ -0,0 +1,108 @@
+package com.ym.mec.student.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicWrapper;
+import com.ym.mec.biz.dal.entity.UserMusic;
+import com.ym.mec.biz.service.UserMusicService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static com.ym.mec.common.controller.BaseController.failed;
+
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.student:}/userMusic")
+@Api(tags = "用户曲目作品")
+public class UserMusicController  extends BaseController {
+
+    @Autowired
+    private UserMusicService userMusicService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @ApiOperation(value = "详情", notes = "用户曲目作品-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<UserMusicWrapper.UserMusic> detail(@PathVariable("id") Long id) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        UserMusicWrapper.UserMusicQuery build = UserMusicWrapper.UserMusicQuery.builder().id(id).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(build), build,
+            JwtUserInfo.builder().userId(user.getId().toString()).clientType(ClientEnum.STUDENT.name()).build());
+        List<UserMusicWrapper.UserMusic> records = pages.getRecords();
+        if (records.isEmpty()) {
+            throw new BizException(999,"作品已删除");
+        }
+
+        return succeed(records.get(0));
+    }
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusicQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicWrapper.UserMusic>> page(@RequestBody UserMusicWrapper.UserMusicQuery query) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        query.setUserId(user.getId().longValue());
+        query.setClientType(ClientEnum.STUDENT);
+        JwtUserInfo<Object> userInfo = JwtUserInfo.builder().userId(user.getId().toString()).clientType(ClientEnum.STUDENT.name()).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(query), query, userInfo);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+
+    @ApiOperation(value = "保存草稿/发布作品", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusic")
+    @PostMapping("/save")
+    public HttpResponseResult<JSONObject> add(@Validated @RequestBody UserMusicWrapper.AddUserMusic userMusic) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        userMusic.setUserId(user.getId().longValue());
+        userMusic.setClientType(ClientEnum.STUDENT);
+        // 新增数据
+        userMusicService.save(userMusic);
+
+        return succeed();
+    }
+
+    @ApiOperation(value = "删除", notes = "用户曲目作品- 传入id")
+    @PostMapping("/remove")
+    public HttpResponseResult<Boolean> remove(@RequestParam String id) {
+
+        if (StringUtils.isBlank(id)) {
+            throw new BizException( "id不能为空");
+        }
+        List<String> list = Arrays.asList(id.split(","));
+
+        userMusicService.lambdaUpdate()
+            .in(UserMusic::getId, list)
+            .set(UserMusic::getDelFlag, true)
+            .update();
+
+        return succeed(true);
+    }
+}

+ 87 - 0
mec-application/src/main/java/com/ym/mec/student/controller/UserMusicStarController.java

@@ -0,0 +1,87 @@
+package com.ym.mec.student.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alipay.service.schema.util.StringUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.entity.UserMusicStar;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicStarWrapper;
+import com.ym.mec.biz.service.StudentService;
+import com.ym.mec.biz.service.SubjectService;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.biz.service.UserMusicStarService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.student:}/userMusicStar")
+@Api(tags = "用户曲目作品点赞记录")
+public class UserMusicStarController  extends BaseController {
+
+    @Autowired
+    private UserMusicStarService userMusicStarService;
+
+    @Autowired
+    private StudentService studentService;
+
+    @Autowired
+    private SubjectService subjectService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品点赞记录- 传入 UserMusicStarWrapper.UserMusicStarQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicStarWrapper.UserMusicStar>> page(@RequestBody @Validated UserMusicStarWrapper.UserMusicStarQuery query) {
+
+        IPage<UserMusicStarWrapper.UserMusicStar> pages = userMusicStarService.selectPage(QueryInfo.getPage(query), query);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+
+
+    @ApiOperation(value = "点赞/取消点赞")
+    @PostMapping("/star")
+    public HttpResponseResult<JSONObject> star(@Validated @RequestBody UserMusicStarWrapper.Star star) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        star.setUserId(user.getId().longValue());
+        star.setClientType(ClientEnum.STUDENT);
+        // 新增数据
+        userMusicStarService.star(star);
+
+        return succeed();
+    }
+}

+ 76 - 0
mec-application/src/main/java/com/ym/mec/student/controller/open/OpenUserMusicController.java

@@ -0,0 +1,76 @@
+package com.ym.mec.student.controller.open;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicWrapper;
+import com.ym.mec.biz.service.UserMusicService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.student:}/open/userMusic")
+@Api(tags = "用户曲目作品")
+public class OpenUserMusicController  extends BaseController {
+
+    @Autowired
+    private UserMusicService userMusicService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+
+    @ApiOperation(value = "详情", notes = "用户曲目作品-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<UserMusicWrapper.UserMusic> detail(@PathVariable("id") Long id) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        JwtUserInfo userInfo = null;
+        if (user != null && null != user.getId()) {
+            userInfo = JwtUserInfo.builder()
+                .clientType(ClientEnum.STUDENT.name())
+                .userId(user.getId().toString())
+                .build();
+        }
+        UserMusicWrapper.UserMusicQuery build = UserMusicWrapper.UserMusicQuery.builder().id(id).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(build), build
+            ,userInfo);
+        List<UserMusicWrapper.UserMusic> records = pages.getRecords();
+        if (records.isEmpty()) {
+            throw new BizException(999,"作品已删除");
+        }
+
+        return succeed(records.get(0));
+    }
+
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusicQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicWrapper.UserMusic>> page(@RequestBody UserMusicWrapper.UserMusicQuery query) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        JwtUserInfo userInfo = null;
+        if (user != null && null != user.getId()) {
+            userInfo = JwtUserInfo.builder()
+                .clientType(ClientEnum.STUDENT.name())
+                .userId(user.getId().toString())
+                .build();
+        }
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(query), query
+            ,userInfo);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+}

+ 46 - 0
mec-application/src/main/java/com/ym/mec/student/controller/open/OpenUserMusicStarController.java

@@ -0,0 +1,46 @@
+package com.ym.mec.student.controller.open;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.common.response.template.R;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.UserMusicStar;
+import com.ym.mec.biz.dal.wrapper.UserMusicStarWrapper;
+import com.ym.mec.biz.service.StudentService;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.biz.service.UserMusicStarService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.student:}/open/userMusicStar")
+@Api(tags = "用户曲目作品点赞记录")
+public class OpenUserMusicStarController {
+
+    @Autowired
+    private UserMusicStarService userMusicStarService;
+
+    @Autowired
+    private StudentService studentService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+}

+ 106 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/UserMusicController.java

@@ -0,0 +1,106 @@
+package com.ym.mec.teacher.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.UserMusic;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicWrapper;
+import com.ym.mec.biz.service.UserMusicService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/userMusic")
+@Api(tags = "用户曲目作品")
+public class UserMusicController  extends BaseController {
+
+    @Autowired
+    private UserMusicService userMusicService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @ApiOperation(value = "详情", notes = "用户曲目作品-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<UserMusicWrapper.UserMusic> detail(@PathVariable("id") Long id) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        UserMusicWrapper.UserMusicQuery build = UserMusicWrapper.UserMusicQuery.builder().id(id).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(build), build,
+            JwtUserInfo.builder().userId(user.getId().toString()).clientType(ClientEnum.TEACHER.name()).build());
+        List<UserMusicWrapper.UserMusic> records = pages.getRecords();
+        if (records.isEmpty()) {
+            throw new BizException(999,"作品已删除");
+        }
+
+        return succeed(records.get(0));
+    }
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusicQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicWrapper.UserMusic>> page(@RequestBody UserMusicWrapper.UserMusicQuery query) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        query.setUserId(user.getId().longValue());
+        query.setClientType(ClientEnum.TEACHER);
+        JwtUserInfo<Object> userInfo = JwtUserInfo.builder().userId(user.getId().toString()).clientType(ClientEnum.TEACHER.name()).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(query), query, userInfo);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+
+    @ApiOperation(value = "保存草稿/发布作品", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusic")
+    @PostMapping("/save")
+    public HttpResponseResult<JSONObject> add(@Validated @RequestBody UserMusicWrapper.AddUserMusic userMusic) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        userMusic.setUserId(user.getId().longValue());
+        userMusic.setClientType(ClientEnum.TEACHER);
+        // 新增数据
+        userMusicService.save(userMusic);
+
+        return succeed();
+    }
+
+    @ApiOperation(value = "删除", notes = "用户曲目作品- 传入id")
+    @PostMapping("/remove")
+    public HttpResponseResult<Boolean> remove(@RequestParam String id) {
+
+        if (StringUtils.isBlank(id)) {
+            throw new BizException( "id不能为空");
+        }
+        List<String> list = Arrays.asList(id.split(","));
+
+        userMusicService.lambdaUpdate()
+            .in(UserMusic::getId, list)
+            .set(UserMusic::getDelFlag, true)
+            .update();
+
+        return succeed(true);
+    }
+}

+ 78 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/UserMusicStarController.java

@@ -0,0 +1,78 @@
+package com.ym.mec.teacher.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alipay.service.schema.util.StringUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.entity.UserMusicStar;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicStarWrapper;
+import com.ym.mec.biz.service.*;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/userMusicStar")
+@Api(tags = "用户曲目作品点赞记录")
+public class UserMusicStarController  extends BaseController {
+
+    @Autowired
+    private UserMusicStarService userMusicStarService;
+
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品点赞记录- 传入 UserMusicStarWrapper.UserMusicStarQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicStarWrapper.UserMusicStar>> page(@RequestBody @Validated UserMusicStarWrapper.UserMusicStarQuery query) {
+
+        IPage<UserMusicStarWrapper.UserMusicStar> pages = userMusicStarService.selectPage(QueryInfo.getPage(query), query);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+
+
+    @ApiOperation(value = "点赞/取消点赞")
+    @PostMapping("/star")
+    public HttpResponseResult<JSONObject> star(@Validated @RequestBody UserMusicStarWrapper.Star star) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        star.setUserId(user.getId().longValue());
+        star.setClientType(ClientEnum.TEACHER);
+        // 新增数据
+        userMusicStarService.star(star);
+
+        return succeed();
+    }
+}

+ 76 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/open/OpenUserMusicController.java

@@ -0,0 +1,76 @@
+package com.ym.mec.teacher.controller.open;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicWrapper;
+import com.ym.mec.biz.service.UserMusicService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/open/userMusic")
+@Api(tags = "用户曲目作品")
+public class OpenUserMusicController  extends BaseController {
+
+    @Autowired
+    private UserMusicService userMusicService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+
+    @ApiOperation(value = "详情", notes = "用户曲目作品-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<UserMusicWrapper.UserMusic> detail(@PathVariable("id") Long id) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        JwtUserInfo userInfo = null;
+        if (user != null && null != user.getId()) {
+            userInfo = JwtUserInfo.builder()
+                .clientType(ClientEnum.TEACHER.name())
+                .userId(user.getId().toString())
+                .build();
+        }
+        UserMusicWrapper.UserMusicQuery build = UserMusicWrapper.UserMusicQuery.builder().id(id).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(build), build
+            ,userInfo);
+        List<UserMusicWrapper.UserMusic> records = pages.getRecords();
+        if (records.isEmpty()) {
+            throw new BizException(999,"作品已删除");
+        }
+
+        return succeed(records.get(0));
+    }
+
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusicQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicWrapper.UserMusic>> page(@RequestBody UserMusicWrapper.UserMusicQuery query) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        JwtUserInfo userInfo = null;
+        if (user != null && null != user.getId()) {
+            userInfo = JwtUserInfo.builder()
+                .clientType(ClientEnum.TEACHER.name())
+                .userId(user.getId().toString())
+                .build();
+        }
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(query), query
+            ,userInfo);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+}

+ 29 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/open/OpenUserMusicStarController.java

@@ -0,0 +1,29 @@
+package com.ym.mec.teacher.controller.open;
+
+import com.ym.mec.biz.service.StudentService;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.biz.service.UserMusicStarService;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/open/userMusicStar")
+@Api(tags = "用户曲目作品点赞记录")
+public class OpenUserMusicStarController {
+
+    @Autowired
+    private UserMusicStarService userMusicStarService;
+
+    @Autowired
+    private StudentService studentService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+}

+ 5 - 0
mec-biz/pom.xml

@@ -72,6 +72,11 @@
 			<artifactId>microsvc-config-validator</artifactId>
 			<artifactId>microsvc-config-validator</artifactId>
 			<version>1.0.0</version>
 			<version>1.0.0</version>
 		</dependency>
 		</dependency>
+        <dependency>
+            <groupId>com.microsvc.toolkit.config</groupId>
+            <artifactId>microsvc-config-jwt</artifactId>
+            <version>1.0.0</version>
+        </dependency>
 		<dependency>
 		<dependency>
 			<groupId>com.microsvc.toolkit.middleware</groupId>
 			<groupId>com.microsvc.toolkit.middleware</groupId>
 			<artifactId>microsvc-middleware-im</artifactId>
 			<artifactId>microsvc-middleware-im</artifactId>

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMusicCompareRecordDao.java

@@ -125,4 +125,6 @@ public interface SysMusicCompareRecordDao extends BaseDAO<Long, SysMusicCompareR
     int queryTeacherTrainingCount(@Param("queryInfo") TeacherCloudTrainingQueryInfo queryInfo);
     int queryTeacherTrainingCount(@Param("queryInfo") TeacherCloudTrainingQueryInfo queryInfo);
 
 
     Integer getUserTrainingTime(@Param("userId") Integer userId);
     Integer getUserTrainingTime(@Param("userId") Integer userId);
+
+    List<SysMusicCompareRecord> getByIds(@Param("musicPracticeRecordIds") List<Long> musicPracticeRecordIds);
 }
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -11,7 +11,9 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.entity.ImUserModel;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.util.Collection;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.Set;
 import java.util.Set;
@@ -551,4 +553,6 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
     List<Teacher> queryBaseInfoByPage(Map<String, Object> params);
     List<Teacher> queryBaseInfoByPage(Map<String, Object> params);
 
 
     int queryBaseInfoByCount(Map<String, Object> params);
     int queryBaseInfoByCount(Map<String, Object> params);
+
+    List<SysUser> getUserList(@Param("studentIds") Collection<? extends Serializable> studentIds);
 }
 }

+ 87 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/UserMusic.java

@@ -0,0 +1,87 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.enums.EUserMusicType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * 用户曲目作品
+ * 2023-09-05 15:27:10
+ */
+@Data
+@ApiModel(" UserMusic-用户曲目作品")
+@TableName("user_music")
+public class UserMusic implements Serializable {
+
+    @TableId(value = "id_",type = IdType.AUTO)
+	    private Long id;
+
+    @ApiModelProperty("用户ID")
+	@TableField(value = "user_id_")
+    private Long userId;
+
+    @ApiModelProperty("用户类型")
+	@TableField(value = "client_type_")
+    private ClientEnum clientType;
+
+    @ApiModelProperty("关联练习数据ID")
+	@TableField(value = "music_practice_record_id_")
+    private Long musicPracticeRecordId;
+
+    @ApiModelProperty("曲目ID")
+	@TableField(value = "music_sheet_id_")
+    private Long musicSheetId;
+
+    @ApiModelProperty("视频封面图")
+    @TableField(value = "video_img_")
+    private String videoImg;
+
+    @ApiModelProperty("原伴奏")
+    @TableField(value = "accompany_url_")
+    private String accompanyUrl;
+
+    @ApiModelProperty("草稿 作品")
+	@TableField(value = "type_")
+    private EUserMusicType type;
+
+    @ApiModelProperty("封面图")
+	@TableField(value = "img_")
+    private String img;
+
+    @ApiModelProperty("发布描述")
+    @TableField(value = "desc_")
+    private String desc;
+
+    @ApiModelProperty("视频地址")
+	@TableField(value = "video_url_")
+    private String videoUrl;
+
+    @ApiModelProperty("json配置")
+	@TableField(value = "json_config_")
+    private String jsonConfig;
+
+    @ApiModelProperty("点赞数")
+    @TableField(value = "like_num_")
+    private Integer likeNum;
+
+    @ApiModelProperty("删除标记")
+	@TableField(value = "del_flag_")
+    private Boolean delFlag;
+
+    @TableField(value = "submit_time_")
+    private Date submitTime;
+
+	@TableField(value = "create_time_")
+    private Date createTime;
+
+}

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/UserMusicStar.java

@@ -0,0 +1,44 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * 用户曲目作品点赞记录
+ * 2023-10-30 14:59:53
+ */
+@Data
+@ApiModel(" UserMusicStar-用户曲目作品点赞记录")
+@TableName("user_music_star")
+public class UserMusicStar implements Serializable {
+
+	    @TableId(value = "id_",type = IdType.AUTO)
+	    private Long id;
+
+    @ApiModelProperty("用户ID")
+	@TableField(value = "user_id_")
+    private Long userId;
+
+    @ApiModelProperty("用户类型")
+	@TableField(value = "client_type_")
+    private ClientEnum clientType;
+
+    @ApiModelProperty("发布作品ID")
+	@TableField(value = "user_music_id_")
+    private Long userMusicId;
+
+    @ApiModelProperty("创建时间")
+	@TableField(value = "create_time_")
+    private Date createTime;
+
+}

+ 31 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EUserMusicType.java

@@ -0,0 +1,31 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.ym.mec.common.enums.BaseEnum;
+import lombok.Getter;
+
+/**
+ * 客户端类型
+ * Created by Eric.Shang on 2022/11/4.
+ */
+@Getter
+public enum EUserMusicType implements BaseEnum<String,EUserMusicType> {
+
+    // 草稿 作品
+    DRAFT("草稿 作品"),
+    // 正式 作品
+    FORMAL("正式 作品"),
+    ;
+
+    private final String msg;
+
+    @EnumValue
+    private final String code;
+
+    EUserMusicType(String msg) {
+        this.msg = msg;
+
+        this.code = this.name();
+    }
+
+}

+ 28 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/UserMusicMapper.java

@@ -0,0 +1,28 @@
+package com.ym.mec.biz.dal.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ym.mec.biz.dal.entity.UserMusic;
+import com.ym.mec.biz.dal.wrapper.UserMusicWrapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 用户曲目作品
+ * 2023-09-05 15:27:10
+ */
+@Repository
+public interface UserMusicMapper extends BaseMapper<UserMusic> {
+
+	/**
+	 * 分页查询
+	 * @param page IPage<UserMusicWrapper.UserMusic>
+	 * @param param UserMusicWrapper.UserMusicQuery
+	 * @return List<UserMusicWrapper.UserMusic>
+	 */
+	List<UserMusicWrapper.UserMusic> selectPage(@Param("page") IPage<UserMusicWrapper.UserMusic> page, @Param("param") UserMusicWrapper.UserMusicQuery param);
+
+    void updateStar(@Param("userMusicId") Long userMusicId);
+}

+ 28 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/UserMusicStarMapper.java

@@ -0,0 +1,28 @@
+package com.ym.mec.biz.dal.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ym.mec.biz.dal.entity.UserMusicStar;
+import com.ym.mec.biz.dal.wrapper.UserMusicStarWrapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 用户曲目作品点赞记录
+ * 2023-10-30 14:59:53
+ */
+@Repository
+public interface UserMusicStarMapper extends BaseMapper<UserMusicStar> {
+
+	/**
+	 * 分页查询
+	 * @param page IPage<UserMusicStarWrapper.UserMusicStar>
+	 * @param param UserMusicStarWrapper.UserMusicStarQuery
+	 * @return List<UserMusicStarWrapper.UserMusicStar>
+	 */
+	List<UserMusicStar> selectPage(@Param("page") IPage<UserMusicStar> page, @Param("param") UserMusicStarWrapper.UserMusicStarQuery param);
+
+    List<UserMusicStarWrapper.StarCount> getStarCountMapByUserMusicIds(@Param("userMusicIds") List<Long> userMusicIds);
+}

+ 135 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/UserMusicStarWrapper.java

@@ -0,0 +1,135 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.alibaba.fastjson.JSON;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.Optional;
+
+/**
+ * 用户曲目作品点赞记录
+ * 2023-10-30 14:59:53
+ */
+@ApiModel(value = "UserMusicStarWrapper对象", description = "用户曲目作品点赞记录查询对象")
+public class UserMusicStarWrapper {
+
+    @Data
+	@Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" UserMusicStarQuery-用户曲目作品点赞记录")
+    public static class UserMusicStarQuery implements QueryInfo {
+
+    	@ApiModelProperty("当前页")
+        private Integer page;
+
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+
+        @ApiModelProperty("关键字匹配")
+		private String keyword;
+
+        @ApiModelProperty("作品ID")
+        @NotNull(message = "作品ID不能为空")
+        private Long userMusicId;
+
+        public String getKeyword() {
+            return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
+        }
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static UserMusicStarQuery from(String json) {
+            return JSON.parseObject(json, UserMusicStarQuery.class);
+        }
+    }
+
+    @Data
+	@ApiModel(" UserMusicStar-用户曲目作品点赞记录")
+    public static class UserMusicStar {
+
+
+        private Long id;
+
+        @ApiModelProperty("用户ID")
+        private Long userId;
+
+        @ApiModelProperty("用户类型")
+        private ClientEnum clientType;
+
+        @ApiModelProperty("用户名")
+        private String userName;
+
+        @ApiModelProperty("用户头像")
+        private String userAvatar;
+
+        @ApiModelProperty(value = "用户声部ID")
+        private String subjectId;
+
+        @ApiModelProperty(value = "用户声部名称")
+        private String subjectName;
+
+        @ApiModelProperty("年级")
+        private Integer currentGradeNum;
+
+        @ApiModelProperty("班级")
+        private String currentClass;
+
+        @ApiModelProperty("发布作品ID")
+        private Long userMusicId;
+
+        @ApiModelProperty("创建时间")
+        private Date createTime;
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static UserMusicStar from(String json) {
+            return JSON.parseObject(json, UserMusicStar.class);
+        }
+	}
+
+
+    @Data
+    @ApiModel(" Star-点赞/取消点赞")
+    public static class Star {
+
+        @ApiModelProperty("发布作品ID")
+        private Long userMusicId;
+
+        @ApiModelProperty("点赞/取消点赞")
+        private Boolean star = true;
+
+
+        @ApiModelProperty(value = "用户ID",hidden = true)
+        private Long userId;
+
+        @ApiModelProperty(value = "用户类型",hidden = true)
+        private ClientEnum clientType;
+
+
+    }
+
+    @Data
+    public static class StarCount {
+
+        @ApiModelProperty("发布作品ID")
+        private Long userMusicId;
+
+        @ApiModelProperty("点赞数")
+        private Integer starCount;
+
+    }
+}

+ 222 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/UserMusicWrapper.java

@@ -0,0 +1,222 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.enums.EUserMusicType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Date;
+import java.util.Optional;
+
+/**
+ * 用户曲目作品
+ * 2023-09-05 15:27:10
+ */
+@ApiModel(value = "UserMusicWrapper对象", description = "用户曲目作品查询对象")
+public class UserMusicWrapper {
+
+    @Data
+	@Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" UserMusicQuery-用户曲目作品")
+    public static class UserMusicQuery implements QueryInfo {
+
+    	@ApiModelProperty("当前页")
+        private Integer page;
+
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+
+        @ApiModelProperty("关键字匹配")
+		private String keyword;
+
+        @ApiModelProperty("草稿 DRAFT 作品FORMAL")
+        private EUserMusicType type;
+
+        @ApiModelProperty(value = "用户ID",hidden = true)
+        private Long userId;
+
+        @ApiModelProperty(value = "用户类型",hidden = true)
+        private ClientEnum clientType;
+
+        @ApiModelProperty(value = "id",hidden = true)
+        private Long id;
+
+
+        @ApiModelProperty(value = "去除的ID,推荐作品列表需要去除原本作品")
+        private Long exclusionId;
+
+
+        @ApiModelProperty(value = "排序 1:推荐")
+        private Integer sort = 0;
+
+
+
+        public String getKeyword() {
+            return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
+        }
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static UserMusicQuery from(String json) {
+            return JSON.parseObject(json, UserMusicQuery.class);
+        }
+    }
+
+    @Data
+	@ApiModel(" UserMusic-用户曲目作品")
+    public static class UserMusic {
+
+
+        private Long id;
+
+        @ApiModelProperty(value = "用户ID")
+        private Long userId;
+
+        @ApiModelProperty(value = "用户类型")
+        private ClientEnum clientType;
+
+        @ApiModelProperty(value = "用户名称")
+        private String username;
+
+        @ApiModelProperty(value = "用户头像")
+        private String avatar;
+
+        @ApiModelProperty(value = "用户声部ID")
+        private String subjectId;
+
+        @ApiModelProperty(value = "用户声部名称")
+        private String subjectName;
+
+        @ApiModelProperty("视频封面图")
+        private String videoImg;
+
+        @ApiModelProperty("年级")
+        private Integer currentGradeNum;
+
+        @ApiModelProperty("班级")
+        private String currentClass;
+
+        @ApiModelProperty(value = "是否会员")
+        private Boolean vipFlag;
+
+        @ApiModelProperty("关联练习数据ID")
+        private Long musicPracticeRecordId;
+
+        @ApiModelProperty(value = "曲目ID")
+        private Long musicSheetId;
+
+
+        @ApiModelProperty("原伴奏")
+        private String accompanyUrl;
+
+        @ApiModelProperty("曲目名称")
+        private String musicSheetName;
+
+        @ApiModelProperty("曲目声部ID")
+        private String musicSheetSubjectId;
+
+        @ApiModelProperty("曲目声部名称")
+        private String musicSheetSubjectName;
+
+        @ApiModelProperty("草稿 DRAFT 作品FORMAL")
+        private EUserMusicType type;
+
+        @ApiModelProperty("封面图")
+        private String img;
+
+        @ApiModelProperty("视频地址")
+        private String videoUrl;
+
+
+        @ApiModelProperty("录音文件地址")
+        private String recordFilePath;
+
+        @ApiModelProperty("录像文件地址")
+        private String videoFilePath;
+
+        @ApiModelProperty("json配置")
+        private String jsonConfig;
+
+        @ApiModelProperty("点赞数")
+        private Integer likeNum = 0;
+
+        @ApiModelProperty("发布描述")
+        private String desc;
+
+        @ApiModelProperty("是否点赞")
+        private Boolean starFlag =false;
+
+
+        @ApiModelProperty("发布作品时间")
+        private Date submitTime;
+
+        @ApiModelProperty("录制上传时间")
+        private Date createTime;
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static UserMusic from(String json) {
+            return JSON.parseObject(json, UserMusic.class);
+        }
+	}
+
+
+    @Data
+    @ApiModel(" UserMusic-用户曲目作品")
+    public static class AddUserMusic {
+
+
+        private Long id;
+
+        @ApiModelProperty(value = "用户ID",hidden = true)
+        private Long userId;
+
+        @ApiModelProperty(value = "用户类型",hidden = true)
+        private ClientEnum clientType;
+
+        @ApiModelProperty("关联练习数据ID")
+        private Long musicPracticeRecordId;
+
+        @ApiModelProperty(value = "曲目ID",hidden = true)
+        private Long musicSheetId;
+
+        @ApiModelProperty("原伴奏")
+        private String accompanyUrl;
+
+
+        @ApiModelProperty("草稿 DRAFT 作品FORMAL")
+        private EUserMusicType type;
+
+        @ApiModelProperty("封面图")
+        private String img;
+
+
+        @ApiModelProperty("发布描述")
+        private String desc;
+
+
+        @ApiModelProperty("视频封面图")
+        private String videoImg;
+        @ApiModelProperty("视频地址")
+        private String videoUrl;
+
+        @ApiModelProperty("json配置")
+        private String jsonConfig;
+
+    }
+
+}

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -436,6 +436,14 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
 	//支付渠道
 	//支付渠道
 	String PAYMENT_CHANNEL = "payment_channel";
 	String PAYMENT_CHANNEL = "payment_channel";
 
 
+    /**
+     * 曲目默认封面图
+     */
+    String MUSIC_SHEET_DEFAULT_IMG_URL = "music_sheet_default_img_url";
+    /**
+     * 我的作品默认视频封面图
+     */
+    String USER_MUSIC_VIDEO_DEFAULT_URL = "user_music_video_default_url";
 
 
     static void checkActivityDate(String startTimeStr, String endTimeStr) {
     static void checkActivityDate(String startTimeStr, String endTimeStr) {
         if(StringUtils.isEmpty(startTimeStr) || StringUtils.isEmpty(startTimeStr)){
         if(StringUtils.isEmpty(startTimeStr) || StringUtils.isEmpty(startTimeStr)){

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicCompareRecordService.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 package com.ym.mec.biz.service;
 
 
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 import com.ym.mec.biz.dal.dao.SysMusicCompareRecordDao;
 import com.ym.mec.biz.dal.dao.SysMusicCompareRecordDao;
@@ -110,4 +111,6 @@ public interface SysMusicCompareRecordService extends BaseService<Long, SysMusic
      * @param campId 训练营id
      * @param campId 训练营id
      */
      */
     boolean insert(SysMusicCompareRecord record,Integer campId);
     boolean insert(SysMusicCompareRecord record,Integer campId);
+
+    Map<Long, SysMusicCompareRecord> getMapByIds(List<Long> musicPracticeRecordIds);
 }
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicScoreService.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service;
 
 
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 import com.ym.mec.biz.dal.dto.MusicScoreDto;
 import com.ym.mec.biz.dal.dto.MusicScoreDto;
 import com.ym.mec.biz.dal.entity.SysMusicScore;
 import com.ym.mec.biz.dal.entity.SysMusicScore;
@@ -27,4 +28,5 @@ public interface SysMusicScoreService extends BaseService<Integer, SysMusicScore
 
 
     int updateExtStyleConfigJson(Integer id, String extStyleConfigJson);
     int updateExtStyleConfigJson(Integer id, String extStyleConfigJson);
 
 
+    Map<Long, SysMusicScore> getMapByIds(List<Long> musicSheetIds);
 }
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysUserService.java

@@ -2,6 +2,11 @@ package com.ym.mec.biz.service;
 
 
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUser;
 
 
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
 public interface SysUserService {
 public interface SysUserService {
     Integer getUserId();
     Integer getUserId();
 
 
@@ -22,4 +27,6 @@ public interface SysUserService {
      * @param userId 用户id
      * @param userId 用户id
      */
      */
     void registerImUserInfo(Integer userId);
     void registerImUserInfo(Integer userId);
+
+    Map<Long, SysUser> getMapByIds(Collection<? extends Serializable> studentIds);
 }
 }

+ 66 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/UserMusicService.java

@@ -0,0 +1,66 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
+import com.ym.mec.biz.dal.entity.UserMusic;
+import com.ym.mec.biz.dal.wrapper.UserMusicWrapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 用户曲目作品
+ * 2023-09-05 15:27:10
+ */
+public interface UserMusicService extends IService<UserMusic>  {
+
+	/**
+     * 查询详情
+     * @param id 详情ID
+     * @return UserMusic
+     */
+	UserMusic detail(Long id);
+
+    /**
+     * 分页查询
+     * @param page IPage<UserMusic>
+     * @param query UserMusicWrapper.UserMusicQuery
+     * @return IPage<UserMusic>
+     */
+    IPage<UserMusicWrapper.UserMusic> selectPage(IPage<UserMusicWrapper.UserMusic> page, UserMusicWrapper.UserMusicQuery query);
+
+    /**
+     * 添加
+     * @param userMusic UserMusicWrapper.UserMusic
+     * @return Boolean
+     */
+     Boolean add(UserMusicWrapper.UserMusic userMusic);
+
+    /**
+     * 更新
+     * @param userMusic UserMusicWrapper.UserMusic
+     * @return Boolean
+     */
+     Boolean update(UserMusicWrapper.UserMusic userMusic);
+
+    /**
+     *  根据曲目练习记录获取发布曲目
+     *
+     * @param musicPracticeRecordIds 曲目练习记录ID
+     */
+    Map<Long, UserMusic> getMapByMusicPracticeRecordIds(List<Long> musicPracticeRecordIds);
+
+
+    /**
+     * 保存草稿/发布作品
+     *
+     */
+    void save(UserMusicWrapper.AddUserMusic userMusic);
+
+    /**
+     * 分页
+     *
+     */
+    IPage<UserMusicWrapper.UserMusic> selectPage(IPage<UserMusicWrapper.UserMusic> page, UserMusicWrapper.UserMusicQuery query, JwtUserInfo<?> userInfo);
+}

+ 63 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/UserMusicStarService.java

@@ -0,0 +1,63 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.entity.UserMusicStar;
+import com.ym.mec.biz.dal.wrapper.UserMusicStarWrapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 用户曲目作品点赞记录
+ * 2023-10-30 14:59:53
+ */
+public interface UserMusicStarService extends IService<UserMusicStar>  {
+
+	/**
+     * 查询详情
+     * @param id 详情ID
+     * @return UserMusicStar
+     */
+	UserMusicStar detail(Long id);
+
+    /**
+     * 分页查询
+     * @param page IPage<UserMusicStar>
+     * @param query UserMusicStarWrapper.UserMusicStarQuery
+     * @return IPage<UserMusicStar>
+     */
+    IPage<UserMusicStarWrapper.UserMusicStar> selectPage(IPage<UserMusicStar> page, UserMusicStarWrapper.UserMusicStarQuery query);
+
+    /**
+     * 添加
+     * @param userMusicStar UserMusicStarWrapper.UserMusicStar
+     * @return Boolean
+     */
+     Boolean add(UserMusicStarWrapper.UserMusicStar userMusicStar);
+
+    /**
+     * 更新
+     * @param userMusicStar UserMusicStarWrapper.UserMusicStar
+     * @return Boolean
+     */
+     Boolean update(UserMusicStarWrapper.UserMusicStar userMusicStar);
+
+    /**
+     * 点赞/取消点赞
+     */
+    void star(UserMusicStarWrapper.Star star);
+
+    /**
+     *
+     * 查询点赞数
+     *
+     */
+    Map<Long,Integer> getStarCountMapByUserMusicIds(List<Long> userMusicIds);
+
+    /**
+     * 是否点赞
+     *
+     */
+    Map<Long,Boolean> getStarFlagMapByUserMusicIds(List<Long> userMusicIds, String clientType, String userId);
+}

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -2096,8 +2096,9 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 
 
     //url路径改造
     //url路径改造
     public static String urlTypeChange(String url){
     public static String urlTypeChange(String url){
-        if (url.isEmpty()){
+        if (StringUtils.isBlank(url)){
             log.warn("url为空");
             log.warn("url为空");
+            return url;
         }
         }
         String replace;
         String replace;
         if (url.contains("https://ks3-cn-beijing.ksyuncs.com")){
         if (url.contains("https://ks3-cn-beijing.ksyuncs.com")){

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -566,6 +566,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
             List<Map<Integer, String>> studentGroupNamesMapList = studentRegistrationDao.queryStudentMusicGroupNamesMap(studentIds);
             List<Map<Integer, String>> studentGroupNamesMapList = studentRegistrationDao.queryStudentMusicGroupNamesMap(studentIds);
             Map<Integer, String> studentGroupNamesMap = MapUtil.convertIntegerMap(studentGroupNamesMapList);
             Map<Integer, String> studentGroupNamesMap = MapUtil.convertIntegerMap(studentGroupNamesMapList);
             Set<Integer> hasVipCourseStudentIds = courseScheduleStudentPaymentDao.getHasVipCourseStudentIds(studentIds);
             Set<Integer> hasVipCourseStudentIds = courseScheduleStudentPaymentDao.getHasVipCourseStudentIds(studentIds);
+            Map<Integer, String> subjectMap = subjectService.getMap("subject", "id", "name", false, 1, Integer.class, String.class);
 
 
             for (EduOrganStudentListDto eduOrganStudentListDto : dataList) {
             for (EduOrganStudentListDto eduOrganStudentListDto : dataList) {
                 if(studentGroupNamesMap.containsKey(eduOrganStudentListDto.getStudentId())){
                 if(studentGroupNamesMap.containsKey(eduOrganStudentListDto.getStudentId())){
@@ -579,6 +580,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
                 }
                 }
                 eduOrganStudentListDto.setCloudStudyUseTime(eduOrganStudentListDto.getCloudStudyUseTime()/60);
                 eduOrganStudentListDto.setCloudStudyUseTime(eduOrganStudentListDto.getCloudStudyUseTime()/60);
                 eduOrganStudentListDto.setCloudStudyUseAvgTime(eduOrganStudentListDto.getCloudStudyUseAvgTime()/60);
                 eduOrganStudentListDto.setCloudStudyUseAvgTime(eduOrganStudentListDto.getCloudStudyUseAvgTime()/60);
+                eduOrganStudentListDto.setSubjectName(subjectMap.get(eduOrganStudentListDto.getStudentId()));
             }
             }
         }
         }
         pageInfo.setRows(dataList);
         pageInfo.setRows(dataList);
@@ -660,12 +662,14 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
             if(!CollectionUtils.isEmpty(studentNotStartPracticeCourseNumMapList)){
             if(!CollectionUtils.isEmpty(studentNotStartPracticeCourseNumMapList)){
                 studentNotStartPracticeCourseNumMap = MapUtil.convertIntegerMap(studentNotStartPracticeCourseNumMapList);
                 studentNotStartPracticeCourseNumMap = MapUtil.convertIntegerMap(studentNotStartPracticeCourseNumMapList);
             }
             }
+            Map<Integer, String> subjectMap = subjectService.getMap("subject", "id", "name", false, 1, Integer.class, String.class);
             //获取分部年级列表
             //获取分部年级列表
             Map<Integer, String> gradeList = organizationService.getGradeList(1);
             Map<Integer, String> gradeList = organizationService.getGradeList(1);
             for (EduOrganStudentListDto eduOrganStudentListDto : dataList1) {
             for (EduOrganStudentListDto eduOrganStudentListDto : dataList1) {
                 EduOrganStudentListExportDto data = new EduOrganStudentListExportDto();
                 EduOrganStudentListExportDto data = new EduOrganStudentListExportDto();
                 BeanUtils.copyProperties(eduOrganStudentListDto, data);
                 BeanUtils.copyProperties(eduOrganStudentListDto, data);
                 data.setOrganName(organMap.get(data.getOrganId()));
                 data.setOrganName(organMap.get(data.getOrganId()));
+                data.setSubjectName(subjectMap.get(data.getStudentId()));
                 if (StringUtils.isNotEmpty(eduOrganStudentListDto.getCurrentGradeNum())) {
                 if (StringUtils.isNotEmpty(eduOrganStudentListDto.getCurrentGradeNum())) {
                     data.setCurrentGradeNum(eduOrganStudentListDto.getCurrentGradeNum());
                     data.setCurrentGradeNum(eduOrganStudentListDto.getCurrentGradeNum());
                     String grade = gradeList.get(Integer.parseInt(eduOrganStudentListDto.getCurrentGradeNum()));
                     String grade = gradeList.get(Integer.parseInt(eduOrganStudentListDto.getCurrentGradeNum()));

+ 28 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicCompareRecordServiceImpl.java

@@ -2,14 +2,12 @@ package com.ym.mec.biz.service.impl;
 
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
+import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.IndexBaseMonthData;
-import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
-import com.ym.mec.biz.dal.entity.SysMusicScore;
-import com.ym.mec.biz.dal.entity.UserMusicCompareCampDayData;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.FeatureType;
 import com.ym.mec.biz.dal.enums.FeatureType;
 import com.ym.mec.biz.dal.enums.HeardLevelEnum;
 import com.ym.mec.biz.dal.enums.HeardLevelEnum;
 import com.ym.mec.biz.dal.enums.IndexDataType;
 import com.ym.mec.biz.dal.enums.IndexDataType;
@@ -72,6 +70,9 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
     @Autowired
     @Autowired
     private UserMusicCompareCampDayDataDao userMusicCompareCampDayDataDao;
     private UserMusicCompareCampDayDataDao userMusicCompareCampDayDataDao;
 
 
+    @Autowired
+    private UserMusicService userMusicService;
+
 	@Override
 	@Override
 	public BaseDAO<Long, SysMusicCompareRecord> getDAO() {
 	public BaseDAO<Long, SysMusicCompareRecord> getDAO() {
 		return sysMusicCompareRecordDao;
 		return sysMusicCompareRecordDao;
@@ -176,8 +177,8 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		jsonObject.put("intonation", userLastEvaluationData.getIntonation());
 		jsonObject.put("intonation", userLastEvaluationData.getIntonation());
 		jsonObject.put("integrity", userLastEvaluationData.getIntegrity());
 		jsonObject.put("integrity", userLastEvaluationData.getIntegrity());
 		jsonObject.put("heardLevel", userLastEvaluationData.getHeardLevel());
 		jsonObject.put("heardLevel", userLastEvaluationData.getHeardLevel());
-		jsonObject.put("videoFilePath", userLastEvaluationData.getVideoFilePath());
-		jsonObject.put("partIndex", userLastEvaluationData.getPartIndex());
+        jsonObject.put("videoFilePath", StringUtils.isNotBlank(userLastEvaluationData.getVideoFilePath())?userLastEvaluationData.getVideoFilePath():userLastEvaluationData.getRecordFilePath());
+        jsonObject.put("partIndex", userLastEvaluationData.getPartIndex());
 		jsonObject.put("expire",DateUtil.isOverdue(userLastEvaluationData.getCreateTime(),
 		jsonObject.put("expire",DateUtil.isOverdue(userLastEvaluationData.getCreateTime(),
 				sysConfigDao.findConfigValue("file_expiration_time")));
 				sysConfigDao.findConfigValue("file_expiration_time")));
 
 
@@ -185,6 +186,15 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		if(Objects.nonNull(sysMusicScore)){
 		if(Objects.nonNull(sysMusicScore)){
 			jsonObject.put("sysMusicScoreName", sysMusicScore.getName());
 			jsonObject.put("sysMusicScoreName", sysMusicScore.getName());
 		}
 		}
+
+        // 上传过作品,用作品视频路径覆盖上传视频路径
+        // ID集合
+        Map<Long, UserMusic> userMusicMap = userMusicService.getMapByMusicPracticeRecordIds(Lists.newArrayList(recordId));
+
+        UserMusic userMusic = userMusicMap.get(recordId);
+        if (Objects.nonNull(userMusic)) {
+            jsonObject.put("videoFilePath", userMusic.getVideoUrl());
+        }
 		return jsonObject;
 		return jsonObject;
 	}
 	}
 
 
@@ -521,6 +531,18 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
         return true;
         return true;
     }
     }
 
 
+    @Override
+    public Map<Long, SysMusicCompareRecord> getMapByIds(List<Long> musicPracticeRecordIds) {
+        if (CollectionUtils.isEmpty(musicPracticeRecordIds)) {
+            return Collections.emptyMap();
+        }
+
+        List<SysMusicCompareRecord> list = sysMusicCompareRecordDao.getByIds(musicPracticeRecordIds);
+
+        return list.stream().collect(Collectors.toMap(SysMusicCompareRecord::getId, Function.identity()));
+
+    }
+
     private void updateCampData(SysMusicCompareRecord record, Integer campId) {
     private void updateCampData(SysMusicCompareRecord record, Integer campId) {
 
 
         if (campId == null) {
         if (campId == null) {

+ 17 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreServiceImpl.java

@@ -17,6 +17,7 @@ import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.SysMusicScoreMetronomeTranscod;
 import com.ym.mec.biz.dal.dto.SysMusicScoreMetronomeTranscod;
 import com.ym.mec.biz.dal.dto.SysMusicScoreTranscod;
 import com.ym.mec.biz.dal.dto.SysMusicScoreTranscod;
@@ -355,7 +356,22 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
 		return sysMusicScoreDao.updateExtStyleConfigJson(id, extStyleConfigJson);
 		return sysMusicScoreDao.updateExtStyleConfigJson(id, extStyleConfigJson);
 	}
 	}
 
 
-	/**
+    @Override
+    public Map<Long, SysMusicScore> getMapByIds(List<Long> musicSheetIds) {
+        if (CollectionUtils.isEmpty(musicSheetIds)) {
+            return new HashMap<>();
+        }
+
+        List<SysMusicScore> musicScoreList = sysMusicScoreDao.findByIds(musicSheetIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
+
+        if (CollectionUtils.isEmpty(musicScoreList)) {
+            return new HashMap<>();
+        }
+        dealMusicScoreData(musicScoreList);
+        return musicScoreList.stream().collect(Collectors.toMap(o -> o.getId().longValue(), e -> e));
+    }
+
+    /**
      * 进行转码
      * 进行转码
      *
      *
      * @param fileUrl
      * @param fileUrl

+ 13 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 package com.ym.mec.biz.service.impl;
 
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUser;
@@ -15,9 +16,8 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.io.Serializable;
+import java.util.*;
 
 
 @Slf4j
 @Slf4j
 @Service
 @Service
@@ -127,4 +127,14 @@ public class SysUserServiceImpl implements SysUserService {
             }
             }
         }
         }
     }
     }
+
+    @Override
+    public Map<Long, SysUser> getMapByIds(Collection<? extends Serializable> studentIds) {
+        if (CollectionUtils.isEmpty(studentIds)) {
+            return new HashMap<>();
+        }
+
+        List<SysUser> userList = teacherDao.getUserList(studentIds);
+        return userList.stream().collect(HashMap::new, (m, v) -> m.put(v.getId().longValue(), v), HashMap::putAll);
+    }
 }
 }

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -168,8 +168,10 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			teacherAttendance=teacherSignOutDto.getTeacherAttendanceInfo();
 			teacherAttendance=teacherSignOutDto.getTeacherAttendanceInfo();
 			teacherAttendance.setTeacherId(user.getId());
 			teacherAttendance.setTeacherId(user.getId());
 			teacherAttendance.setCreateTime(date);
 			teacherAttendance.setCreateTime(date);
-		}else if(teacherAttendance.getSignInTime() != null && teacherAttendance.getSignOutTime() != null){
+		}else if(teacherAttendance.getSignInTime() != null){
 			throw new BizException("当前课程已签到");
 			throw new BizException("当前课程已签到");
+		} else if (teacherAttendance.getSignOutTime() != null) {
+			throw new BizException("当前课程已签退");
 		}
 		}
 
 
 		TeacherAttendanceDto currentCourseDetail = courseScheduleDao.getCurrentCourseDetail(teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId(),user.getId());
 		TeacherAttendanceDto currentCourseDetail = courseScheduleDao.getCurrentCourseDetail(teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId(),user.getId());

+ 334 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/UserMusicServiceImpl.java

@@ -0,0 +1,334 @@
+package com.ym.mec.biz.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alipay.service.schema.util.StringUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.microsvc.toolkit.common.webportal.exception.BizException;
+import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.enums.EUserMusicType;
+import com.ym.mec.biz.dal.mapper.UserMusicMapper;
+import com.ym.mec.biz.dal.wrapper.UserMusicWrapper;
+import com.ym.mec.biz.service.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 用户曲目作品
+ * 2023-09-05 15:27:10
+ */
+@Slf4j
+@Service
+public class UserMusicServiceImpl extends ServiceImpl<UserMusicMapper, UserMusic> implements UserMusicService {
+
+
+
+    @Autowired
+    private UserMusicService userMusicService;
+
+    @Autowired
+    private SysMusicCompareRecordService sysMusicCompareRecordService;
+
+    @Autowired
+    private SysMusicScoreService sysMusicScoreService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+    @Autowired
+    private SubjectService subjectService;
+
+    @Autowired
+    private UserMusicStarService userMusicStarService;
+
+    @Autowired
+    private StudentService studentService;
+
+    @Autowired
+    private TeacherService teacherService;
+
+    @Autowired
+    private SysConfigService sysConfigService;
+
+
+    /**
+     * 查询详情
+     * @param id 详情ID
+     * @return UserMusic
+     */
+    @Override
+    public UserMusic detail(Long id) {
+
+        return baseMapper.selectById(id);
+    }
+
+    /**
+     * 分页查询
+     * @param page IPage<UserMusic>
+     * @param query UserMusicWrapper.UserMusicQuery
+     * @return IPage<UserMusic>
+     */
+    @Override
+    public IPage<UserMusicWrapper.UserMusic> selectPage(IPage<UserMusicWrapper.UserMusic> page, UserMusicWrapper.UserMusicQuery query) {
+
+        return page.setRecords(baseMapper.selectPage(page, query));
+    }
+
+    /**
+     * 添加
+     * @param userMusic UserMusicWrapper.UserMusic
+     * @return Boolean
+     */
+    @Override
+    public Boolean add(UserMusicWrapper.UserMusic userMusic) {
+
+        return this.save(JSON.parseObject(userMusic.jsonString(), UserMusic.class));
+    }
+
+    /**
+     * 更新
+     * @param userMusic UserMusicWrapper.UserMusic
+     * @return Boolean
+     */
+    @Override
+    public Boolean update(UserMusicWrapper.UserMusic userMusic){
+
+        return this.updateById(JSON.parseObject(userMusic.jsonString(), UserMusic.class));
+    }
+
+
+    /**
+     *  根据曲目练习记录获取发布曲目
+     *
+     * @param musicPracticeRecordIds 曲目练习记录ID
+     * @return
+     */
+    @Override
+    public Map<Long, UserMusic> getMapByMusicPracticeRecordIds(List<Long> musicPracticeRecordIds) {
+        if (CollectionUtils.isEmpty(musicPracticeRecordIds)) {
+            return new HashMap<>();
+        }
+        List<UserMusic> list = this.lambdaQuery()
+            .in(UserMusic::getMusicPracticeRecordId, musicPracticeRecordIds)
+            .eq(UserMusic::getType, EUserMusicType.FORMAL)
+            .eq(UserMusic::getDelFlag, false)
+            .list();
+        if (CollectionUtils.isEmpty(list)) {
+            return new HashMap<>();
+        }
+        return list.stream().collect(Collectors.toMap(UserMusic::getMusicPracticeRecordId, v -> v, (v1, v2) -> v1));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void save(UserMusicWrapper.AddUserMusic userMusic) {
+
+        // 设置曲目ID
+        if (userMusic.getMusicPracticeRecordId() != null) {
+            SysMusicCompareRecord practiceRecord = sysMusicCompareRecordService.get(userMusic.getMusicPracticeRecordId());
+            if (practiceRecord == null) {
+                throw new BizException("练习记录不存在");
+            }
+            userMusic.setMusicSheetId(practiceRecord.getSysMusicScoreId().longValue());
+            List<UserMusic> list = userMusicService.lambdaQuery()
+                .eq(UserMusic::getMusicPracticeRecordId, userMusic.getMusicPracticeRecordId())
+                .eq(UserMusic::getUserId, userMusic.getUserId())
+                .eq(UserMusic::getClientType, userMusic.getClientType())
+                .eq(UserMusic::getDelFlag, false)
+                .orderByAsc(UserMusic::getId)
+                .list();
+            if (!CollectionUtils.isEmpty(list)) {
+                userMusic.setId(list.get(0).getId());
+            }
+        }
+
+        // 设置默认封面
+        if (userMusic.getId() == null && StringUtils.isEmpty(userMusic.getImg()) && userMusic.getMusicSheetId() != null) {
+//            SysMusicScore sheet = sysMusicScoreService.get(userMusic.getMusicSheetId().intValue());
+//            if (sheet != null) {
+//                userMusic.setImg(sheet.getTitleImg());
+//            }
+
+            String configValue = sysConfigService.findByParamName(SysConfigService.MUSIC_SHEET_DEFAULT_IMG_URL).getParanValue();
+            userMusic.setImg(configValue);
+
+        }
+        // 设置视频默认封面
+        if (userMusic.getId() == null && StringUtil.isEmpty(userMusic.getVideoImg())) {
+            String value = sysConfigService.findByParamName(SysConfigService.USER_MUSIC_VIDEO_DEFAULT_URL).getParanValue();
+            userMusic.setVideoImg(value);
+        }
+        UserMusic entity = JSON.parseObject(JSON.toJSONString(userMusic), UserMusic.class);
+
+        UserMusic old = null;
+        if (entity.getId() != null) {
+            old = userMusicService.getById(entity.getId());
+            if (old.getType() == EUserMusicType.FORMAL && entity.getType() == EUserMusicType.DRAFT) {
+                throw new BizException("已发布的作品不能修改为草稿");
+            }
+        }
+
+        if (entity.getType() == null) {
+        } else if (entity.getType().equals(EUserMusicType.DRAFT)) {
+            entity.setSubmitTime(null);
+        } else if (old == null || old.getType().equals(EUserMusicType.DRAFT)) {
+            entity.setSubmitTime(new Date());
+        }
+        userMusicService.saveOrUpdate(entity);
+    }
+
+    /**
+     * 分页
+     *
+     */
+    @Override
+    public IPage<UserMusicWrapper.UserMusic> selectPage(IPage<UserMusicWrapper.UserMusic> page, UserMusicWrapper.UserMusicQuery query, JwtUserInfo<?> userInfo) {
+        // 推荐作品 排序 同曲目同声部点赞降序>其他曲目同声部点赞降序
+        if (query.getSort() !=null && query.getSort() == 1) {
+            if (query.getExclusionId() != null) {
+                UserMusic userMusic = userMusicService.getById(query.getExclusionId());
+                if (userMusic != null) {
+                    query.setClientType(userMusic.getClientType());
+                    query.setUserId(userMusic.getUserId());
+                }
+            }
+        }
+        IPage<UserMusicWrapper.UserMusic> userMusicIPage = userMusicService.selectPage(page, query);
+        List<UserMusicWrapper.UserMusic> records = userMusicIPage.getRecords();
+        if (CollectionUtils.isEmpty(records)) {
+            return userMusicIPage;
+        }
+
+        // id集合
+        List<Long> ids = records.stream().map(UserMusicWrapper.UserMusic::getId).collect(Collectors.toList());
+
+        // 是否点赞
+        if (userInfo != null) {
+            Map<Long, Boolean> starFlagMapByUserMusicIds = userMusicStarService.getStarFlagMapByUserMusicIds(ids, userInfo.getClientType(), userInfo.getUserId());
+            for (UserMusicWrapper.UserMusic record : records) {
+                Boolean starFlag = starFlagMapByUserMusicIds.get(record.getId());
+                if (starFlag != null) {
+                    record.setStarFlag(starFlag);
+                }
+            }
+        }
+
+
+//        Map<Long, Integer> mapByUserMusicIds = userMusicStarService.getStarCountMapByUserMusicIds(ids);
+//        for (UserMusicWrapper.UserMusic record : records) {
+//            Integer starCount = mapByUserMusicIds.get(record.getId());
+//            if (starCount != null) {
+//                record.setLikeNum(starCount);
+//            }
+//        }
+
+        // 评测记录ID集合
+        List<Long> musicPracticeRecordIds = records.stream()
+            .map(UserMusicWrapper.UserMusic::getMusicPracticeRecordId).collect(Collectors.toList());
+        Map<Long, SysMusicCompareRecord> recordMap = sysMusicCompareRecordService.getMapByIds(musicPracticeRecordIds);
+        for (UserMusicWrapper.UserMusic record : records) {
+            SysMusicCompareRecord musicPracticeRecord = recordMap.get(record.getMusicPracticeRecordId());
+            if (musicPracticeRecord != null) {
+                record.setRecordFilePath(musicPracticeRecord.getRecordFilePath());
+                record.setVideoFilePath(musicPracticeRecord.getVideoFilePath());
+            }
+        }
+
+        // 曲目ID集合
+        List<Long> musicSheetIds = records.stream().map(UserMusicWrapper.UserMusic::getMusicSheetId).collect(Collectors.toList());
+        Map<Long, SysMusicScore> musicSheetMap = sysMusicScoreService.getMapByIds(musicSheetIds);
+
+        for (UserMusicWrapper.UserMusic record : records) {
+            SysMusicScore musicSheet = musicSheetMap.get(record.getMusicSheetId());
+            if (musicSheet != null) {
+                record.setMusicSheetName(musicSheet.getName());
+//                record.setMusicSheetSubjectId(musicSheet.get());
+            }
+        }
+
+        // 用户ID集合
+        List<Long> userIds = records.stream().map(UserMusicWrapper.UserMusic::getUserId).collect(Collectors.toList());
+        Map<Long, SysUser> userMap = sysUserService.getMapByIds(userIds);
+
+        // 学生ID集合
+        List<Long> studentIds = records.stream().filter(o -> o.getClientType() == ClientEnum.STUDENT)
+            .map(UserMusicWrapper.UserMusic::getUserId).collect(Collectors.toList());
+        Map<Integer, Student> studentMap = studentService.getMapByIds(studentIds.stream().map(Long::intValue).collect(Collectors.toList()));
+
+        SysConfig userAvatar = sysConfigService.findByParamName(SysConfigService.USER_DEFAULT_AVATAR);
+        // 老师ID集合
+        List<Long> teacherIds = records.stream().filter(o -> o.getClientType() == ClientEnum.TEACHER)
+            .map(UserMusicWrapper.UserMusic::getUserId).collect(Collectors.toList());
+        Map<Integer, Teacher> teacherMap = teacherService.getMapByIds(teacherIds.stream().map(Long::intValue).collect(Collectors.toList()));
+        for (UserMusicWrapper.UserMusic record : records) {
+            SysUser sysUser = userMap.get(record.getUserId());
+            if (sysUser != null) {
+                record.setUsername(sysUser.getUsername());
+                record.setAvatar(sysUser.getAvatar());
+            }
+            if (record.getClientType() == ClientEnum.STUDENT) {
+                Student student = studentMap.get(record.getUserId().intValue());
+                if (student != null) {
+
+                    record.setCurrentGradeNum(student.getCurrentGradeNum());
+                    record.setCurrentClass(student.getCurrentClass());
+                    record.setSubjectId(student.getSubjectIdList());
+                    record.setVipFlag(student.getMembershipEndTime() != null && student.getMembershipEndTime().after(new Date()));
+                }
+            } else {
+                Teacher teacher = teacherMap.get(record.getUserId().intValue());
+                if (teacher != null) {
+                    record.setSubjectId(teacher.getSubjectId());
+                }
+            }
+            if (StringUtil.isEmpty(record.getAvatar())) {
+                record.setAvatar(userAvatar.getParanValue());
+            }
+        }
+
+        // 声部ID集合
+        List<Integer> subjectIds = records.stream().map(UserMusicWrapper.UserMusic::getSubjectId)
+            .filter(o -> !StringUtil.isEmpty(o))
+            .flatMap( o -> Arrays.stream(o.split(",")))
+            .map(Integer::parseInt)
+            .distinct().collect(Collectors.toList());
+
+        Map<Integer, Subject> subjectMap =
+            subjectService.getMapByIds(subjectIds);
+
+        for (UserMusicWrapper.UserMusic record : records) {
+            if (!StringUtil.isEmpty(record.getSubjectId())) {
+                String[] split = record.getSubjectId().split(",");
+                List<String> subjectNameList = new ArrayList<>();
+                for (String s : split) {
+                    Subject subject = subjectMap.get(Integer.parseInt(s));
+                    if (subject != null) {
+                        subjectNameList.add(subject.getName());
+                    }
+                }
+                record.setSubjectName(String.join(",", subjectNameList));
+
+            }
+            if (StringUtil.isEmpty(record.getMusicSheetSubjectId())) {
+                continue;
+            }
+            Subject subject = subjectMap.get(Integer.parseInt(record.getMusicSheetSubjectId()));
+            if (subject != null) {
+                record.setMusicSheetSubjectName(subject.getName());
+            }
+        }
+
+
+        return userMusicIPage;
+    }
+}

+ 229 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/UserMusicStarServiceImpl.java

@@ -0,0 +1,229 @@
+package com.ym.mec.biz.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alipay.service.schema.util.StringUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.mapper.UserMusicMapper;
+import com.ym.mec.biz.dal.mapper.UserMusicStarMapper;
+import com.ym.mec.biz.dal.wrapper.UserMusicStarWrapper;
+import com.ym.mec.biz.service.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 用户曲目作品点赞记录
+ * 2023-10-30 14:59:53
+ */
+@Slf4j
+@Service
+public class UserMusicStarServiceImpl extends ServiceImpl<UserMusicStarMapper, UserMusicStar> implements UserMusicStarService {
+
+    @Autowired
+    private UserMusicMapper userMusicMapper;
+
+    @Autowired
+    private StudentService studentService;
+
+    @Autowired
+    private SubjectService subjectService;
+
+    @Autowired
+    private SysUserService sysUserService;
+    @Autowired
+    private TeacherService teacherService;
+
+    @Autowired
+    private SysConfigService sysConfigService;
+	/**
+     * 查询详情
+     * @param id 详情ID
+     * @return UserMusicStar
+     */
+	@Override
+    public UserMusicStar detail(Long id) {
+
+        return baseMapper.selectById(id);
+    }
+
+    /**
+     * 分页查询
+     * @param page IPage<UserMusicStar>
+     * @param query UserMusicStarWrapper.UserMusicStarQuery
+     * @return IPage<UserMusicStar>
+     */
+    @Override
+    public IPage<UserMusicStarWrapper.UserMusicStar> selectPage(IPage<UserMusicStar> page, UserMusicStarWrapper.UserMusicStarQuery query) {
+
+        IPage<UserMusicStar> userMusicStarIPage = page.setRecords(baseMapper.selectPage(page, query));
+        IPage<UserMusicStarWrapper.UserMusicStar> convert = userMusicStarIPage.convert(o -> JSON.parseObject(JSON.toJSONString(o), UserMusicStarWrapper.UserMusicStar.class));
+
+
+        List<UserMusicStarWrapper.UserMusicStar> records = convert.getRecords();
+
+        List<UserMusicStarWrapper.UserMusicStar> userMusicStars = new ArrayList<>();
+        if (CollectionUtils.isEmpty(records)){
+            return convert;
+        }
+
+        userMusicStars = JSON.parseArray(JSON.toJSONString(records), UserMusicStarWrapper.UserMusicStar.class);
+
+        // 学生ID集合
+        List<Integer> studentIds = records.stream().map(UserMusicStarWrapper.UserMusicStar::getUserId).map(Long::intValue).collect(Collectors.toList());
+
+        Map<Long, SysUser> userMap = sysUserService.getMapByIds(studentIds);
+        studentIds = records.stream().filter(o ->o.getClientType() == ClientEnum.STUDENT)
+            .map(UserMusicStarWrapper.UserMusicStar::getUserId).map(Long::intValue).collect(Collectors.toList());
+
+        Map<Integer, Student> studentMap = studentService.getMapByIds(studentIds);
+
+
+        studentIds = records.stream().filter(o ->o.getClientType() == ClientEnum.TEACHER)
+            .map(UserMusicStarWrapper.UserMusicStar::getUserId).map(Long::intValue).collect(Collectors.toList());
+
+        SysConfig userAvatar = sysConfigService.findByParamName(SysConfigService.USER_DEFAULT_AVATAR);
+        Map<Integer, Teacher> teacherMap = teacherService.getMapByIds(studentIds);
+        for (UserMusicStarWrapper.UserMusicStar userMusicStar : userMusicStars) {
+            if (userMusicStar.getClientType() == ClientEnum.STUDENT) {
+                Student student = studentMap.get(userMusicStar.getUserId().intValue());
+                if (student != null) {
+                    userMusicStar.setSubjectId(student.getSubjectIdList());
+                    userMusicStar.setCurrentClass(student.getCurrentClass());
+                    userMusicStar.setCurrentGradeNum(student.getCurrentGradeNum());
+                }
+            } else {
+                Teacher teacher = teacherMap.get(userMusicStar.getUserId().intValue());
+                if (teacher != null) {
+                    userMusicStar.setSubjectId(teacher.getSubjectId());
+                }
+
+            }
+            SysUser sysUser = userMap.get(userMusicStar.getUserId());
+            if (sysUser != null) {
+                userMusicStar.setUserName(sysUser.getUsername());
+                userMusicStar.setUserAvatar(sysUser.getAvatar());
+            }
+            if (StringUtil.isEmpty(userMusicStar.getUserAvatar())) {
+                userMusicStar.setUserAvatar(userAvatar.getParanValue());
+            }
+        }
+
+        // 声部ID集合
+        List<Integer> subjectIds = userMusicStars.stream().map(UserMusicStarWrapper.UserMusicStar::getSubjectId)
+            .filter(StringUtils::isNotBlank).map(Integer::parseInt).collect(Collectors.toList());
+
+        Map<Integer, Subject> subjectMap =
+            subjectService.getMapByIds(subjectIds);
+
+        for (UserMusicStarWrapper.UserMusicStar userMusicStar : userMusicStars) {
+
+
+            if (!StringUtil.isEmpty(userMusicStar.getSubjectId())) {
+                String[] split = userMusicStar.getSubjectId().split(",");
+                List<String> subjectNameList = new ArrayList<>();
+                for (String s : split) {
+                    Subject subject = subjectMap.get(Integer.parseInt(s));
+                    if (subject != null) {
+                        subjectNameList.add(subject.getName());
+                    }
+                }
+                userMusicStar.setSubjectName(String.join(",", subjectNameList));
+
+            }
+        }
+        return convert.setRecords(userMusicStars);
+    }
+
+    /**
+     * 添加
+     * @param userMusicStar UserMusicStarWrapper.UserMusicStar
+     * @return Boolean
+     */
+    @Override
+    public Boolean add(UserMusicStarWrapper.UserMusicStar userMusicStar) {
+
+        return this.save(JSON.parseObject(userMusicStar.jsonString(), UserMusicStar.class));
+    }
+
+    /**
+     * 更新
+     * @param userMusicStar UserMusicStarWrapper.UserMusicStar
+     * @return Boolean
+     */
+    @Override
+    public Boolean update(UserMusicStarWrapper.UserMusicStar userMusicStar){
+
+        return this.updateById(JSON.parseObject(userMusicStar.jsonString(), UserMusicStar.class));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void star(UserMusicStarWrapper.Star star) {
+
+        this.lambdaUpdate()
+            .eq(UserMusicStar::getUserId, star.getUserId())
+            .eq(UserMusicStar::getUserMusicId, star.getUserMusicId())
+            .eq(UserMusicStar::getClientType, star.getClientType())
+            .remove();
+
+        if (star.getStar()) {
+            UserMusicStar userMusicStar = new UserMusicStar();
+            userMusicStar.setClientType(star.getClientType());
+            userMusicStar.setUserId(star.getUserId());
+            userMusicStar.setUserMusicId(star.getUserMusicId());
+            this.save(userMusicStar);
+        }
+        userMusicMapper.updateStar(star.getUserMusicId());
+
+
+    }
+
+    @Override
+    public Map<Long, Integer> getStarCountMapByUserMusicIds(List<Long> userMusicIds) {
+        if (CollectionUtils.isEmpty(userMusicIds)) {
+            return new HashMap<>();
+        }
+        List<UserMusicStarWrapper.StarCount> starCounts = baseMapper.getStarCountMapByUserMusicIds(userMusicIds);
+        Map<Long, Integer> starCountMap = new HashMap<>();
+        for (UserMusicStarWrapper.StarCount starCount : starCounts) {
+            starCountMap.put(starCount.getUserMusicId(), starCount.getStarCount());
+        }
+        return starCountMap;
+    }
+
+    @Override
+    public Map<Long, Boolean> getStarFlagMapByUserMusicIds(List<Long> userMusicIds, String clientType, String userId) {
+        if (CollectionUtils.isEmpty(userMusicIds)) {
+            return new HashMap<>();
+        }
+        if (StringUtil.isEmpty(clientType)) {
+            return new HashMap<>();
+        }
+        if (StringUtil.isEmpty(userId)) {
+            return new HashMap<>();
+        }
+        List<UserMusicStar> list = this.lambdaQuery()
+            .eq(UserMusicStar::getClientType, clientType)
+            .eq(UserMusicStar::getUserId, userId)
+            .in(UserMusicStar::getUserMusicId, userMusicIds)
+            .list();
+        if (CollectionUtils.isEmpty(list)) {
+            return new HashMap<>();
+        }
+        return list.stream().collect(Collectors.toMap(UserMusicStar::getUserMusicId, o->true, (k1, k2) -> k1));
+    }
+}

+ 4 - 4
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -296,7 +296,7 @@
         LEFT JOIN music_group mg ON cgtm.music_group_id_ = mg.id_
         LEFT JOIN music_group mg ON cgtm.music_group_id_ = mg.id_
         LEFT JOIN class_group cg ON cg.id_ = cgtm.class_group_id_
         LEFT JOIN class_group cg ON cg.id_ = cgtm.class_group_id_
         LEFT JOIN teacher t ON t.id_ = cgtm.user_id_
         LEFT JOIN teacher t ON t.id_ = cgtm.user_id_
-        LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_ AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.pre_course_flag_ = 0
+        LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_ AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.pre_course_flag_ != 1
         <include refid="queryGroupCoursesSql"/>
         <include refid="queryGroupCoursesSql"/>
         GROUP BY cgtm.id_
         GROUP BY cgtm.id_
         <include refid="global.limit"/>
         <include refid="global.limit"/>
@@ -703,7 +703,7 @@
             LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
             LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
             LEFT JOIN school s ON mg.school_id_ = s.id_
             LEFT JOIN school s ON mg.school_id_ = s.id_
         WHERE
         WHERE
-            csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
+            csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ != 1
             AND cg.group_type_='MUSIC'
             AND cg.group_type_='MUSIC'
             AND cg.del_flag_ = 0
             AND cg.del_flag_ = 0
             AND cs.del_flag_ = 0
             AND cs.del_flag_ = 0
@@ -853,7 +853,7 @@
 
 
     <sql id="queryMusicGroupCourseScheduleSql">
     <sql id="queryMusicGroupCourseScheduleSql">
         <where>
         <where>
-            cs.group_type_ = 'MUSIC' AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+            cs.group_type_ = 'MUSIC' AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1
             <if test="startTime != null">
             <if test="startTime != null">
                 AND cs.class_date_ &gt;= #{startTime}
                 AND cs.class_date_ &gt;= #{startTime}
             </if>
             </if>
@@ -871,7 +871,7 @@
 
 
     <sql id="queryMusicGroupCourseScheduleDetailSql">
     <sql id="queryMusicGroupCourseScheduleDetailSql">
         <where>
         <where>
-            (ta.teacher_id_ = cs.actual_teacher_id_ OR ta.id_ IS NULL) AND cs.group_type_ = 'MUSIC' AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+            (ta.teacher_id_ = cs.actual_teacher_id_ OR ta.id_ IS NULL) AND cs.group_type_ = 'MUSIC' AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1
             <if test="classScheduleType != null">
             <if test="classScheduleType != null">
                 AND cs.type_ = #{classScheduleType}
                 AND cs.type_ = #{classScheduleType}
             </if>
             </if>

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleConvert.xml

@@ -9,7 +9,7 @@
     <select id="countLegalCourse" resultType="java.lang.Integer">
     <select id="countLegalCourse" resultType="java.lang.Integer">
         SELECT COUNT(cs.id_) FROM course_schedule cs
         SELECT COUNT(cs.id_) FROM course_schedule cs
         WHERE status_ = 'NOT_START' AND (cs.type_ IN ('SINGLE','TRAINING_SINGLE') OR cs.convert_flag_ = 1)
         WHERE status_ = 'NOT_START' AND (cs.type_ IN ('SINGLE','TRAINING_SINGLE') OR cs.convert_flag_ = 1)
-        AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.new_course_id_ IS NULL
+        AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 AND cs.new_course_id_ IS NULL
         AND cs.id_ IN
         AND cs.id_ IN
         <foreach collection="courseIdList" item="id" open="(" close=")" separator=",">
         <foreach collection="courseIdList" item="id" open="(" close=")" separator=",">
             #{id}
             #{id}

+ 81 - 84
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -199,7 +199,7 @@
     </sql>
     </sql>
 
 
     <sql id="courseIgnore">
     <sql id="courseIgnore">
-        AND cs.del_flag_ = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ = 0
+        AND cs.del_flag_ = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ != 1
         AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
         AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
     </sql>
     </sql>
 
 
@@ -543,7 +543,7 @@
         WHERE cs.actual_teacher_id_ = #{teacherId}
         WHERE cs.actual_teacher_id_ = #{teacherId}
           AND (CONCAT(cs.class_date_, ' ', cs.end_class_time_) BETWEEN #{startTime} AND #{endTime})
           AND (CONCAT(cs.class_date_, ' ', cs.end_class_time_) BETWEEN #{startTime} AND #{endTime})
           AND cs.schoole_id_ = #{schoolId}
           AND cs.schoole_id_ = #{schoolId}
-          AND ta.sign_in_time_ IS NOT NULL AND cs.pre_course_flag_ = 0
+          AND ta.sign_in_time_ IS NOT NULL AND cs.pre_course_flag_ != 1
         ORDER BY cs.id_
         ORDER BY cs.id_
     </select>
     </select>
 
 
@@ -621,7 +621,7 @@
                 LEFT JOIN music_group mg ON cs.music_group_id_=mg.id_
                 LEFT JOIN music_group mg ON cs.music_group_id_=mg.id_
             </if>
             </if>
         WHERE
         WHERE
-            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
             <if test="organIds!=null and organIds.size()>0">
             <if test="organIds!=null and organIds.size()>0">
                 AND cs.organ_id_ IN
                 AND cs.organ_id_ IN
                 <foreach collection="organIds" item="organId" separator="," open="(" close=")">
                 <foreach collection="organIds" item="organId" separator="," open="(" close=")">
@@ -662,7 +662,7 @@
             LEFT JOIN music_group mg ON cs.music_group_id_=mg.id_
             LEFT JOIN music_group mg ON cs.music_group_id_=mg.id_
         </if>
         </if>
         WHERE
         WHERE
-        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
         AND cs.id_ IS NOT NULL
         AND cs.id_ IS NOT NULL
         <if test="organIds!=null and organIds.size()>0">
         <if test="organIds!=null and organIds.size()>0">
             AND cs.organ_id_ IN
             AND cs.organ_id_ IN
@@ -722,7 +722,7 @@
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
         AND cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
         AND cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
-        AND cssp.user_id_ = #{studentId} AND cs.pre_course_flag_ = 0
+        AND cssp.user_id_ = #{studentId} AND cs.pre_course_flag_ != 1
         <if test="quitClassGroupIds != null and quitClassGroupIds.size()>0">
         <if test="quitClassGroupIds != null and quitClassGroupIds.size()>0">
             AND cssp.class_group_id_ NOT IN
             AND cssp.class_group_id_ NOT IN
             <foreach collection="quitClassGroupIds" item="quitClassGroupId" open="(" close=")" separator=",">
             <foreach collection="quitClassGroupIds" item="quitClassGroupId" open="(" close=")" separator=",">
@@ -773,7 +773,7 @@
         <if test="type!=null and type!=''">
         <if test="type!=null and type!=''">
             AND cs.type_=#{type}
             AND cs.type_=#{type}
         </if>
         </if>
-        AND csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
+        AND csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ != 1
         ORDER BY start_class_time_
         ORDER BY start_class_time_
     </select>
     </select>
 
 
@@ -862,7 +862,7 @@
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
           AND cs.class_date_ = DATE_FORMAT(#{classDate}, '%Y%m%d')
           AND cs.class_date_ = DATE_FORMAT(#{classDate}, '%Y%m%d')
           AND csts.user_id_ = #{teacherId}
           AND csts.user_id_ = #{teacherId}
-          AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) &lt; NOW() AND cs.pre_course_flag_ = 0
+          AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) &lt; NOW() AND cs.pre_course_flag_ != 1
         ORDER BY start_class_time_
         ORDER BY start_class_time_
     </select>
     </select>
 
 
@@ -872,7 +872,7 @@
                  LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
                  LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
         WHERE DATE_FORMAT(cs.class_date_, '%Y%m') = DATE_FORMAT(#{month}, '%Y%m')
         WHERE DATE_FORMAT(cs.class_date_, '%Y%m') = DATE_FORMAT(#{month}, '%Y%m')
           AND cg.music_group_id_ = #{musicGroupID}
           AND cg.music_group_id_ = #{musicGroupID}
-          AND cg.group_type_ = 'MUSIC' AND cs.pre_course_flag_ = 0
+          AND cg.group_type_ = 'MUSIC' AND cs.pre_course_flag_ != 1
         GROUP BY cs.class_date_
         GROUP BY cs.class_date_
     </select>
     </select>
 
 
@@ -992,7 +992,7 @@
         WHERE
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
         AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
-        AND cssp.user_id_ = #{studentId} AND cs.pre_course_flag_ = 0
+        AND cssp.user_id_ = #{studentId} AND cs.pre_course_flag_ != 1
         <if test="month==null">
         <if test="month==null">
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
         </if>
         </if>
@@ -1016,7 +1016,7 @@
         WHERE
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-        AND csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
+        AND csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ != 1
         <if test="month==null">
         <if test="month==null">
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
         </if>
         </if>
@@ -1069,7 +1069,7 @@
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
         AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
         AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
         AND csts.user_id_ = #{teacherId}
         AND csts.user_id_ = #{teacherId}
-        AND cg.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+        AND cg.del_flag_ = 0 AND cs.pre_course_flag_ != 1
         <if test="month==null">
         <if test="month==null">
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
         </if>
         </if>
@@ -1113,7 +1113,7 @@
                 LEFT JOIN music_group mg ON cs.music_group_id_=mg.id_
                 LEFT JOIN music_group mg ON cs.music_group_id_=mg.id_
             </if>
             </if>
         WHERE
         WHERE
-            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
             <if test="organIds!=null and organIds.size()>0">
             <if test="organIds!=null and organIds.size()>0">
                 AND cs.organ_id_ IN
                 AND cs.organ_id_ IN
                 <foreach collection="organIds" item="organId" separator="," open="(" close=")">
                 <foreach collection="organIds" item="organId" separator="," open="(" close=")">
@@ -1153,7 +1153,7 @@
             cssp.user_id_=#{userId}
             cssp.user_id_=#{userId}
             AND cs.status_ != 'NOT_START'
             AND cs.status_ != 'NOT_START'
             AND cs.del_flag_ = 0
             AND cs.del_flag_ = 0
-            AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL) AND cs.pre_course_flag_ = 0
+            AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL) AND cs.pre_course_flag_ != 1
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
             <if test="teachMode!=null and teachMode!=''">
             <if test="teachMode!=null and teachMode!=''">
                 AND cs.teach_mode_=#{teachMode}
                 AND cs.teach_mode_=#{teachMode}
@@ -1236,7 +1236,7 @@
         AND cs.status_ = 'NOT_START'
         AND cs.status_ = 'NOT_START'
         AND cssp.user_id_ = #{userId}
         AND cssp.user_id_ = #{userId}
         AND cs.class_date_ = DATE_FORMAT(#{date}, '%Y%m%d')
         AND cs.class_date_ = DATE_FORMAT(#{date}, '%Y%m%d')
-        AND cs.pre_course_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+        AND cs.pre_course_flag_ != 1 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
         ORDER BY cs.class_date_, cs.start_class_time_
         ORDER BY cs.class_date_, cs.start_class_time_
     </select>
     </select>
     <select id="findCourseScheduleByMusicGroup" resultMap="CourseSchedule">
     <select id="findCourseScheduleByMusicGroup" resultMap="CourseSchedule">
@@ -1518,7 +1518,7 @@
         <where>
         <where>
             (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
             (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-            AND cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ = 0
+            AND cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ != 1
             <if test="userId != null">
             <if test="userId != null">
                 AND csts.user_id_ = #{userId}
                 AND csts.user_id_ = #{userId}
             </if>
             </if>
@@ -1589,7 +1589,7 @@
 
 
     <sql id="teacherGroupCourseQueryCondition">
     <sql id="teacherGroupCourseQueryCondition">
         <where>
         <where>
-            cs.actual_teacher_id_=#{teacherId} AND cs.pre_course_flag_ = 0
+            cs.actual_teacher_id_=#{teacherId} AND cs.pre_course_flag_ != 1
             AND cs.music_group_id_ = #{groupId}
             AND cs.music_group_id_ = #{groupId}
             AND cs.group_type_ = #{groupType}
             AND cs.group_type_ = #{groupType}
         </where>
         </where>
@@ -1656,7 +1656,7 @@
         LEFT JOIN sys_user ssu ON sa.user_id_=ssu.id_
         LEFT JOIN sys_user ssu ON sa.user_id_=ssu.id_
         LEFT JOIN school s ON cs.schoole_id_ = s.id_
         LEFT JOIN school s ON cs.schoole_id_ = s.id_
         WHERE
         WHERE
-        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
+        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1
         AND sa.class_group_id_=#{classGroupId}
         AND sa.class_group_id_=#{classGroupId}
         <if test="userId != null">
         <if test="userId != null">
             AND sa.teacher_id_=#{userId}
             AND sa.teacher_id_=#{userId}
@@ -1690,7 +1690,7 @@
         student_attendance sa
         student_attendance sa
         LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
         LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
         WHERE
         WHERE
-        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
+        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1
         AND sa.class_group_id_=#{classGroupId}
         AND sa.class_group_id_=#{classGroupId}
         <if test="userId != null">
         <if test="userId != null">
             AND sa.teacher_id_=#{userId}
             AND sa.teacher_id_=#{userId}
@@ -1711,7 +1711,7 @@
         FROM class_group cg
         FROM class_group cg
                  LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
                  LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
         WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-          AND cg.music_group_id_ = #{musicGroupId} AND cs.pre_course_flag_ = 0
+          AND cg.music_group_id_ = #{musicGroupId} AND cs.pre_course_flag_ != 1
         GROUP BY cg.id_
         GROUP BY cg.id_
     </select>
     </select>
     <select id="findCourseScheduleCurrentTimes" resultType="java.util.Map">
     <select id="findCourseScheduleCurrentTimes" resultType="java.util.Map">
@@ -1763,7 +1763,7 @@
         LEFT JOIN music_group mg ON cs.music_group_id_=mg.id_
         LEFT JOIN music_group mg ON cs.music_group_id_=mg.id_
         WHERE
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-        AND cs.teacher_id_=#{teacherId} AND cs.pre_course_flag_ = 0
+        AND cs.teacher_id_=#{teacherId} AND cs.pre_course_flag_ != 1
         and CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) between #{startTime} and #{endTime}
         and CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) between #{startTime} and #{endTime}
         <if test="type != null">
         <if test="type != null">
             and cs.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             and cs.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
@@ -1929,7 +1929,7 @@
         select cssp.user_id_ key_, count(1) value_
         select cssp.user_id_ key_, count(1) value_
         from course_schedule cs
         from course_schedule cs
                  right join course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_
                  right join course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_
-        where class_date_ = date(DATE_ADD(now(), INTERVAL 1 DAY)) AND cs.pre_course_flag_ = 0
+        where class_date_ = date(DATE_ADD(now(), INTERVAL 1 DAY)) AND cs.pre_course_flag_ != 1
         group by cssp.user_id_
         group by cssp.user_id_
     </select>
     </select>
 
 
@@ -1938,7 +1938,7 @@
         from course_schedule cs
         from course_schedule cs
                  right join course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_
                  right join course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_
         where CONCAT(cs.class_date_, ' ', cs.start_class_time_) &lt; DATE_ADD(now(), INTERVAL 90 MINUTE)
         where CONCAT(cs.class_date_, ' ', cs.start_class_time_) &lt; DATE_ADD(now(), INTERVAL 90 MINUTE)
-          and cs.status_ = 'NOT_START' AND cs.pre_course_flag_ = 0
+          and cs.status_ = 'NOT_START' AND cs.pre_course_flag_ != 1
     </select>
     </select>
 
 
     <select id="queryTeacherCoursesTimesOfTomorrow" resultMap="Mapper">
     <select id="queryTeacherCoursesTimesOfTomorrow" resultMap="Mapper">
@@ -1946,7 +1946,7 @@
         from course_schedule cs
         from course_schedule cs
                  right join course_schedule_teacher_salary cssp on cs.id_ = cssp.course_schedule_id_
                  right join course_schedule_teacher_salary cssp on cs.id_ = cssp.course_schedule_id_
                  left join sys_user u on u.id_ = cssp.user_id_
                  left join sys_user u on u.id_ = cssp.user_id_
-        where (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND class_date_ = date(DATE_ADD(now(), INTERVAL 1 DAY)) AND cs.pre_course_flag_ = 0
+        where (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND class_date_ = date(DATE_ADD(now(), INTERVAL 1 DAY)) AND cs.pre_course_flag_ != 1
         group by cssp.user_id_
         group by cssp.user_id_
     </select>
     </select>
 
 
@@ -2012,7 +2012,7 @@
             AND cs.class_date_ BETWEEN #{startDate} AND #{endDate}
             AND cs.class_date_ BETWEEN #{startDate} AND #{endDate}
           AND cs.group_type_ = 'MUSIC'
           AND cs.group_type_ = 'MUSIC'
           and cs.tenant_id_ = #{tenantId}
           and cs.tenant_id_ = #{tenantId}
-          AND (cs.del_flag_ IS NULL OR cs.del_flag_ = 0) AND cs.pre_course_flag_ = 0
+          AND (cs.del_flag_ IS NULL OR cs.del_flag_ = 0) AND cs.pre_course_flag_ != 1
     </select>
     </select>
 
 
     <select id="findByClassGroup" resultMap="CourseSchedule">
     <select id="findByClassGroup" resultMap="CourseSchedule">
@@ -2065,7 +2065,7 @@
                cs.schoole_id_
                cs.schoole_id_
         from course_schedule cs
         from course_schedule cs
                  LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
                  LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
-        where cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ = 0
+        where cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ != 1
           AND cs.status_ = #{status}
           AND cs.status_ = #{status}
     </select>
     </select>
     <select id="findByClassGroups" resultMap="CourseSchedule">
     <select id="findByClassGroups" resultMap="CourseSchedule">
@@ -2097,7 +2097,7 @@
         <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
         <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
             #{classGroupId}
             #{classGroupId}
         </foreach>
         </foreach>
-        AND cs.pre_course_flag_ = 0
+        AND cs.pre_course_flag_ != 1
         ORDER BY start_class_time_
         ORDER BY start_class_time_
     </select>
     </select>
     <select id="findStudentMap" resultType="java.util.Map">
     <select id="findStudentMap" resultType="java.util.Map">
@@ -2143,14 +2143,14 @@
                  LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
                  LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
         WHERE cg.music_group_id_ = #{musicGroupId}
         WHERE cg.music_group_id_ = #{musicGroupId}
           AND cs.group_type_ = #{groupType}
           AND cs.group_type_ = #{groupType}
-          AND status_ = #{status} AND cs.pre_course_flag_ = 0
+          AND status_ = #{status} AND cs.pre_course_flag_ != 1
     </select>
     </select>
     <select id="findMusicGroupAllCourseSchedules" resultMap="CourseSchedule">
     <select id="findMusicGroupAllCourseSchedules" resultMap="CourseSchedule">
         SELECT cs.*
         SELECT cs.*
         FROM course_schedule cs
         FROM course_schedule cs
                  LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
                  LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
         WHERE cg.music_group_id_ = #{musicGroupId}
         WHERE cg.music_group_id_ = #{musicGroupId}
-          AND cs.group_type_ = #{groupType} AND cs.pre_course_flag_ = 0
+          AND cs.group_type_ = #{groupType} AND cs.pre_course_flag_ != 1
     </select>
     </select>
     <select id="findMusicGroupCourseSchedulesWithStudent" resultMap="CourseSchedule">
     <select id="findMusicGroupCourseSchedulesWithStudent" resultMap="CourseSchedule">
         SELECT cs.*
         SELECT cs.*
@@ -2160,7 +2160,7 @@
           AND cssp.music_group_id_ = #{musicGroupId}
           AND cssp.music_group_id_ = #{musicGroupId}
           AND cssp.group_type_ = #{groupType}
           AND cssp.group_type_ = #{groupType}
           AND cs.status_ = #{status}
           AND cs.status_ = #{status}
-          AND cssp.user_id_ = #{userId} AND cs.pre_course_flag_ = 0
+          AND cssp.user_id_ = #{userId} AND cs.pre_course_flag_ != 1
     </select>
     </select>
 
 
     <delete id="deleteMusicGroupCourseSchedulesWithStudent">
     <delete id="deleteMusicGroupCourseSchedulesWithStudent">
@@ -2224,7 +2224,7 @@
         WHERE cs.music_group_id_ = #{musicGroupId}
         WHERE cs.music_group_id_ = #{musicGroupId}
           and cs.group_type_ = 'MUSIC'
           and cs.group_type_ = 'MUSIC'
           and cs.status_ != 'OVER'
           and cs.status_ != 'OVER'
-          AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+          AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1
         LIMIT 1
         LIMIT 1
     </select>
     </select>
     <select id="findClassGroupCourseSchedules" resultMap="CourseSchedule">
     <select id="findClassGroupCourseSchedules" resultMap="CourseSchedule">
@@ -2252,7 +2252,7 @@
                cs.schoole_id_
                cs.schoole_id_
         FROM course_schedule cs
         FROM course_schedule cs
         WHERE cs.class_group_id_ = #{classGroupId}
         WHERE cs.class_group_id_ = #{classGroupId}
-          AND (cs.del_flag_ = 0 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
+          AND (cs.del_flag_ = 0 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1
     </select>
     </select>
     <select id="countVipGroupCourses" resultType="int">
     <select id="countVipGroupCourses" resultType="int">
         SELECT count(cs.id_)
         SELECT count(cs.id_)
@@ -2323,7 +2323,7 @@
         <if test="preCourseFlag != null">
         <if test="preCourseFlag != null">
             AND cs.pre_course_flag_ = #{preCourseFlag}
             AND cs.pre_course_flag_ = #{preCourseFlag}
         </if>
         </if>
-        AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+        AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1
         GROUP BY cs.class_group_id_
         GROUP BY cs.class_group_id_
     </select>
     </select>
     <select id="countPreTotalNumByClassGroupId" resultType="java.util.Map">
     <select id="countPreTotalNumByClassGroupId" resultType="java.util.Map">
@@ -2347,7 +2347,7 @@
         <if test="endClassDate != null">
         <if test="endClassDate != null">
             AND cs.class_date_ &lt;= DATE_FORMAT(#{endClassDate}, '%Y%m%d')
             AND cs.class_date_ &lt;= DATE_FORMAT(#{endClassDate}, '%Y%m%d')
         </if>
         </if>
-        AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+        AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 AND cs.is_lock_ = 0
         GROUP BY cs.class_group_id_
         GROUP BY cs.class_group_id_
     </select>
     </select>
     <select id="queryCourseTypeByClassGroupIds" resultType="java.lang.String">
     <select id="queryCourseTypeByClassGroupIds" resultType="java.lang.String">
@@ -2360,7 +2360,7 @@
         <if test="dto.endSchoolTerm != null">
         <if test="dto.endSchoolTerm != null">
             AND cs.class_date_ &lt;= DATE_FORMAT(#{dto.endSchoolTerm}, '%Y%m%d')
             AND cs.class_date_ &lt;= DATE_FORMAT(#{dto.endSchoolTerm}, '%Y%m%d')
         </if>
         </if>
-        AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+        AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 AND cs.is_lock_ = 0
         UNION ALL
         UNION ALL
         SELECT DISTINCT tp.course_type_ type_ FROM music_group_train_plan tp
         SELECT DISTINCT tp.course_type_ type_ FROM music_group_train_plan tp
         WHERE tp.class_group_id_ = #{dto.classGroupId}
         WHERE tp.class_group_id_ = #{dto.classGroupId}
@@ -2380,7 +2380,7 @@
         <if test="teacherId != null">
         <if test="teacherId != null">
             AND cs.actual_teacher_id_ = #{teacherId}
             AND cs.actual_teacher_id_ = #{teacherId}
         </if>
         </if>
-        AND cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cs.pre_course_flag_ = 0
+        AND cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cs.pre_course_flag_ != 1
         GROUP BY cs.class_group_id_
         GROUP BY cs.class_group_id_
     </select>
     </select>
     <select id="countCurrentNumByClassId" resultType="java.lang.Integer">
     <select id="countCurrentNumByClassId" resultType="java.lang.Integer">
@@ -2389,7 +2389,7 @@
         <if test="teacherId != null">
         <if test="teacherId != null">
             AND cs.actual_teacher_id_ = #{teacherId}
             AND cs.actual_teacher_id_ = #{teacherId}
         </if>
         </if>
-        AND cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cs.pre_course_flag_ = 0
+        AND cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cs.pre_course_flag_ != 1
     </select>
     </select>
 
 
     <select id="countExpendNumByClassGroupId" resultType="java.util.Map">
     <select id="countExpendNumByClassGroupId" resultType="java.util.Map">
@@ -2398,7 +2398,7 @@
         <foreach collection="classGroupIds" item="item" separator="," open="(" close=")">
         <foreach collection="classGroupIds" item="item" separator="," open="(" close=")">
             #{item}
             #{item}
         </foreach>
         </foreach>
-        AND cs.status_ != 'NOT_START' AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+        AND cs.status_ != 'NOT_START' AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1
         GROUP BY cs.class_group_id_
         GROUP BY cs.class_group_id_
     </select>
     </select>
     <select id="countExpendNumByClassGroupIds" resultType="java.util.Map">
     <select id="countExpendNumByClassGroupIds" resultType="java.util.Map">
@@ -2413,7 +2413,7 @@
         <if test="endClassDate != null">
         <if test="endClassDate != null">
             AND cs.class_date_ &lt;= DATE_FORMAT(#{endClassDate}, '%Y%m%d')
             AND cs.class_date_ &lt;= DATE_FORMAT(#{endClassDate}, '%Y%m%d')
         </if>
         </if>
-        AND cs.status_ != 'NOT_START' AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+        AND cs.status_ != 'NOT_START' AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 AND cs.is_lock_ = 0
         GROUP BY cs.class_group_id_
         GROUP BY cs.class_group_id_
     </select>
     </select>
 
 
@@ -2430,7 +2430,7 @@
                cssp.expect_price_
                cssp.expect_price_
         FROM course_schedule cs
         FROM course_schedule cs
                  LEFT JOIN course_schedule_student_payment cssp ON cs.id_ = cssp.course_schedule_id_
                  LEFT JOIN course_schedule_student_payment cssp ON cs.id_ = cssp.course_schedule_id_
-        WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
+        WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1
           <if test="groupType != null">
           <if test="groupType != null">
           AND cs.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
           AND cs.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
           </if>
           </if>
@@ -2508,7 +2508,7 @@
 
 
     <sql id="endFindCourseSchedulesCondition">
     <sql id="endFindCourseSchedulesCondition">
         <where>
         <where>
-            cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+            cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
             <include refid="queryVipCourseScheduleIds"/>
             <include refid="queryVipCourseScheduleIds"/>
         </where>
         </where>
     </sql>
     </sql>
@@ -2522,10 +2522,7 @@
             cs.organ_id_,cs.member_flag_,cs.new_course_id_,s.name_ schoole_name_,o.name_ organ_name_,
             cs.organ_id_,cs.member_flag_,cs.new_course_id_,s.name_ schoole_name_,o.name_ organ_name_,
             CASE WHEN COUNT(CASE WHEN sa.id_ IS NULL OR (sa.status_ = 'LEAVE' AND sa.remark_ IS NOT NULL) THEN NULL ELSE 1 END) > 0 THEN 1 ELSE 0 END isCallNames,
             CASE WHEN COUNT(CASE WHEN sa.id_ IS NULL OR (sa.status_ = 'LEAVE' AND sa.remark_ IS NOT NULL) THEN NULL ELSE 1 END) > 0 THEN 1 ELSE 0 END isCallNames,
             CASE WHEN COUNT(CASE WHEN ta.is_complaints_ = 1 THEN 1 ELSE NULL END) > 0 THEN '1' ELSE '0' END is_complaints_,
             CASE WHEN COUNT(CASE WHEN ta.is_complaints_ = 1 THEN 1 ELSE NULL END) > 0 THEN '1' ELSE '0' END is_complaints_,
-            (
-                select group_concat(csd.id_) from course_schedule csd
-                where csd.del_flag_ = 0 and csd.id_ != csd.new_course_id_  and csd.new_course_id_ = cs.new_course_id_
-            ) as merged_course_ids_,GROUP_CONCAT(distinct CASE WHEN csts.teacher_role_ = 'TEACHING' THEN csts.user_id_ END) teachingTeacherIds
+            GROUP_CONCAT(distinct CASE WHEN csts.teacher_role_ = 'TEACHING' THEN csts.user_id_ END) teachingTeacherIds
         FROM
         FROM
             course_schedule cs
             course_schedule cs
             LEFT JOIN school s ON cs.schoole_id_=s.id_
             LEFT JOIN school s ON cs.schoole_id_=s.id_
@@ -2582,7 +2579,7 @@
         WHERE FIND_IN_SET(cs.class_group_id_, #{classGroupIds})
         WHERE FIND_IN_SET(cs.class_group_id_, #{classGroupIds})
           AND cs.status_ = 'NOT_START'
           AND cs.status_ = 'NOT_START'
           AND cs.class_date_ &gt;= DATE_FORMAT(#{fromDate}, "%Y-%m-%d")
           AND cs.class_date_ &gt;= DATE_FORMAT(#{fromDate}, "%Y-%m-%d")
-          AND (cs.del_flag_ IS NULL OR cs.del_flag_ = 0) AND cs.pre_course_flag_ = 0
+          AND (cs.del_flag_ IS NULL OR cs.del_flag_ = 0) AND cs.pre_course_flag_ != 1
     </select>
     </select>
 
 
     <select id="findGroupCourseStartTime" resultType="java.util.Date">
     <select id="findGroupCourseStartTime" resultType="java.util.Date">
@@ -2852,7 +2849,7 @@
         FROM course_schedule_student_payment cssp
         FROM course_schedule_student_payment cssp
                  LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
                  LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
         WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_) AND cs.pre_course_flag_ = 0
+        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_) AND cs.pre_course_flag_ != 1
         AND cssp.user_id_ = #{userId}
         AND cssp.user_id_ = #{userId}
         <if test="groupType != null">
         <if test="groupType != null">
         and cs.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         and cs.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
@@ -2868,7 +2865,7 @@
           AND TIMESTAMPDIFF(MINUTE, #{endDateTime}, CONCAT(cs.class_date_, ' ', cs.start_class_time_)) &lt;= #{continueCourseTime}
           AND TIMESTAMPDIFF(MINUTE, #{endDateTime}, CONCAT(cs.class_date_, ' ', cs.start_class_time_)) &lt;= #{continueCourseTime}
           AND cs.teacher_id_ = #{courseSchedule.teacherId}
           AND cs.teacher_id_ = #{courseSchedule.teacherId}
           AND cs.class_group_id_ = #{courseSchedule.classGroupId}
           AND cs.class_group_id_ = #{courseSchedule.classGroupId}
-          AND (NOW() > CONCAT(cs.class_date_,' ', cs.start_class_time_) OR sa.sign_in_time_ IS NOT NULL) AND cs.pre_course_flag_ = 0
+          AND (NOW() > CONCAT(cs.class_date_,' ', cs.start_class_time_) OR sa.sign_in_time_ IS NOT NULL) AND cs.pre_course_flag_ != 1
         LIMIT 1
         LIMIT 1
     </select>
     </select>
     <select id="queryTeacherContinueCourse" resultMap="CourseSchedule">
     <select id="queryTeacherContinueCourse" resultMap="CourseSchedule">
@@ -2879,7 +2876,7 @@
           AND TIMESTAMPDIFF(MINUTE, #{endDateTime}, CONCAT(cs.class_date_, ' ', cs.start_class_time_)) &lt;= #{continueCourseTime}
           AND TIMESTAMPDIFF(MINUTE, #{endDateTime}, CONCAT(cs.class_date_, ' ', cs.start_class_time_)) &lt;= #{continueCourseTime}
           AND cs.teacher_id_ = #{courseSchedule.teacherId}
           AND cs.teacher_id_ = #{courseSchedule.teacherId}
           AND cs.class_group_id_ = #{courseSchedule.classGroupId}
           AND cs.class_group_id_ = #{courseSchedule.classGroupId}
-          AND (NOW() > CONCAT(cs.class_date_,' ', cs.start_class_time_) OR ta.sign_in_time_ IS NOT NULL) AND cs.pre_course_flag_ = 0
+          AND (NOW() > CONCAT(cs.class_date_,' ', cs.start_class_time_) OR ta.sign_in_time_ IS NOT NULL) AND cs.pre_course_flag_ != 1
         LIMIT 1
         LIMIT 1
     </select>
     </select>
     <select id="getSingleClassMinutes" resultType="java.lang.Integer">
     <select id="getSingleClassMinutes" resultType="java.lang.Integer">
@@ -2910,7 +2907,7 @@
             course_schedule cs
             course_schedule cs
         WHERE CONCAT(cs.class_date_, ' ', cs.start_class_time_) &lt; NOW()
         WHERE CONCAT(cs.class_date_, ' ', cs.start_class_time_) &lt; NOW()
             AND cs.group_type_ = #{groupType}
             AND cs.group_type_ = #{groupType}
-            AND cs.music_group_id_ = #{groupId} AND cs.pre_course_flag_ = 0
+            AND cs.music_group_id_ = #{groupId} AND cs.pre_course_flag_ != 1
     </select>
     </select>
     <select id="findUserCourses" resultMap="CourseSchedule">
     <select id="findUserCourses" resultMap="CourseSchedule">
         SELECT
         SELECT
@@ -2933,7 +2930,7 @@
         <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
         <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
             #{teacherId}
             #{teacherId}
         </foreach>
         </foreach>
-        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL ) AND cs.pre_course_flag_ = 0
+        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL ) AND cs.pre_course_flag_ != 1
     </select>
     </select>
     <select id="findUserCourses2" resultMap="CourseSchedule">
     <select id="findUserCourses2" resultMap="CourseSchedule">
         SELECT
         SELECT
@@ -2956,7 +2953,7 @@
         <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
         <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
             #{teacherId}
             #{teacherId}
         </foreach>
         </foreach>
-        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL ) AND cs.pre_course_flag_ = 0
+        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL ) AND cs.pre_course_flag_ != 1
     </select>
     </select>
     <select id="findUserCourses3" resultMap="CourseSchedule">
     <select id="findUserCourses3" resultMap="CourseSchedule">
         SELECT
         SELECT
@@ -2978,7 +2975,7 @@
         <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
         <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
             #{teacherId}
             #{teacherId}
         </foreach>
         </foreach>
-        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL ) AND cs.pre_course_flag_ = 0
+        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL ) AND cs.pre_course_flag_ != 1
     </select>
     </select>
     <select id="findUserCoursesWithPay" resultMap="CourseSchedule">
     <select id="findUserCoursesWithPay" resultMap="CourseSchedule">
         SELECT
         SELECT
@@ -3021,7 +3018,7 @@
                 AND del_flag_ = 0) c
                 AND del_flag_ = 0) c
         WHERE cs.class_group_id_ = c.class_group_id_
         WHERE cs.class_group_id_ = c.class_group_id_
           AND CONCAT(cs.class_date_, " ", cs.start_class_time_) &lt;= c.class_date_
           AND CONCAT(cs.class_date_, " ", cs.start_class_time_) &lt;= c.class_date_
-          AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+          AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1
     </select>
     </select>
     <select id="findCourseSchedulesByClassGroups" resultMap="CourseSchedule">
     <select id="findCourseSchedulesByClassGroups" resultMap="CourseSchedule">
         SELECT
         SELECT
@@ -3053,7 +3050,7 @@
         <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
         <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
             #{classGroupId}
             #{classGroupId}
         </foreach>
         </foreach>
-        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL ) AND cs.pre_course_flag_ = 0
+        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL ) AND cs.pre_course_flag_ != 1
         ORDER BY start_class_time_
         ORDER BY start_class_time_
     </select>
     </select>
 
 
@@ -3203,7 +3200,7 @@
         cs.status_
         cs.status_
         FROM course_schedule cs
         FROM course_schedule cs
         LEFT JOIN course_schedule_evaluate cse ON cs.id_ = cse.course_schedule_id_
         LEFT JOIN course_schedule_evaluate cse ON cs.id_ = cse.course_schedule_id_
-        WHERE cs.group_type_ = #{groupType} AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+        WHERE cs.group_type_ = #{groupType} AND cs.pre_course_flag_ != 10 and cs.tenant_id_ = #{tenantId}
         <if test="groupId != null">
         <if test="groupId != null">
             AND cs.music_group_id_ = #{groupId}
             AND cs.music_group_id_ = #{groupId}
         </if>
         </if>
@@ -3218,7 +3215,7 @@
         FROM course_schedule cs
         FROM course_schedule cs
         WHERE cs.music_group_id_ = #{groupId}
         WHERE cs.music_group_id_ = #{groupId}
           AND cs.group_type_ = #{groupType}
           AND cs.group_type_ = #{groupType}
-          AND NOW() > CONCAT(cs.class_date_, ' ', cs.end_class_time_) AND cs.pre_course_flag_ = 0
+          AND NOW() > CONCAT(cs.class_date_, ' ', cs.end_class_time_) AND cs.pre_course_flag_ != 1
         ORDER BY cs.class_date_, cs.end_class_time_ ASC
         ORDER BY cs.class_date_, cs.end_class_time_ ASC
         LIMIT 1
         LIMIT 1
     </select>
     </select>
@@ -3277,7 +3274,7 @@
         FROM course_schedule cs
         FROM course_schedule cs
         WHERE cs.music_group_id_ = #{groupId}
         WHERE cs.music_group_id_ = #{groupId}
           AND cs.group_type_ = #{groupType}
           AND cs.group_type_ = #{groupType}
-          AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+          AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1
     </select>
     </select>
     <select id="findCourseByGroupIds" resultMap="CourseSchedule">
     <select id="findCourseByGroupIds" resultMap="CourseSchedule">
         SELECT
         SELECT
@@ -3285,7 +3282,7 @@
         FROM course_schedule cs
         FROM course_schedule cs
         WHERE cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         WHERE cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         AND cs.del_flag_ = 0
         AND cs.del_flag_ = 0
-        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = 0) AND cs.pre_course_flag_ = 0
+        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = 0) AND cs.pre_course_flag_ != 1
         AND cs.music_group_id_ IN
         AND cs.music_group_id_ IN
             <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
             <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
                 #{groupId}
                 #{groupId}
@@ -3300,7 +3297,7 @@
           AND ta.sign_in_time_ IS NOT NULL
           AND ta.sign_in_time_ IS NOT NULL
           AND MONTH(ta.sign_in_time_) = #{month}
           AND MONTH(ta.sign_in_time_) = #{month}
           AND cs.teach_mode_ = 'ONLINE'
           AND cs.teach_mode_ = 'ONLINE'
-          AND ta.teacher_id_ = cs.actual_teacher_id_ AND cs.pre_course_flag_ = 0
+          AND ta.teacher_id_ = cs.actual_teacher_id_ AND cs.pre_course_flag_ != 1
         GROUP BY ta.course_schedule_id_
         GROUP BY ta.course_schedule_id_
         HAVING COUNT(sa.id_) > 0
         HAVING COUNT(sa.id_) > 0
     </select>
     </select>
@@ -3412,7 +3409,7 @@
         WHERE cs.class_group_id_ = #{classGroupId}
         WHERE cs.class_group_id_ = #{classGroupId}
         AND TIMESTAMPDIFF(MINUTE, CONCAT(cs.class_date_," ",cs.end_class_time_),#{startTime}) &lt;= #{continueCourseTime}
         AND TIMESTAMPDIFF(MINUTE, CONCAT(cs.class_date_," ",cs.end_class_time_),#{startTime}) &lt;= #{continueCourseTime}
         AND TIMESTAMPDIFF(MINUTE, CONCAT(cs.class_date_," ",cs.end_class_time_),#{startTime}) >= 0
         AND TIMESTAMPDIFF(MINUTE, CONCAT(cs.class_date_," ",cs.end_class_time_),#{startTime}) >= 0
-        AND cs.actual_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
+        AND cs.actual_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ != 1
         ORDER BY cs.class_date_ DESC,cs.end_class_time_ DESC
         ORDER BY cs.class_date_ DESC,cs.end_class_time_ DESC
         LIMIT 1
         LIMIT 1
     </select>
     </select>
@@ -3421,7 +3418,7 @@
         WHERE cs.class_group_id_ = #{classGroupId}
         WHERE cs.class_group_id_ = #{classGroupId}
         AND TIMESTAMPDIFF(MINUTE, #{endTime},CONCAT(cs.class_date_," ",cs.start_class_time_)) &lt;= #{continueCourseTime}
         AND TIMESTAMPDIFF(MINUTE, #{endTime},CONCAT(cs.class_date_," ",cs.start_class_time_)) &lt;= #{continueCourseTime}
         AND TIMESTAMPDIFF(MINUTE, #{endTime},CONCAT(cs.class_date_," ",cs.start_class_time_)) >= 0
         AND TIMESTAMPDIFF(MINUTE, #{endTime},CONCAT(cs.class_date_," ",cs.start_class_time_)) >= 0
-        AND cs.actual_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
+        AND cs.actual_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ != 1
         ORDER BY cs.class_date_ DESC,cs.start_class_time_ DESC
         ORDER BY cs.class_date_ DESC,cs.start_class_time_ DESC
         LIMIT 1
         LIMIT 1
     </select>
     </select>
@@ -3530,14 +3527,14 @@
                cs.organ_id_ FROM course_schedule cs
                cs.organ_id_ FROM course_schedule cs
         LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
         LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
         WHERE FIND_IN_SET(cs.class_group_id_,#{classGroupIds}) AND csts.teacher_role_ = #{teacherRole}
         WHERE FIND_IN_SET(cs.class_group_id_,#{classGroupIds}) AND csts.teacher_role_ = #{teacherRole}
-        AND csts.user_id_ = #{teacherId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+        AND csts.user_id_ = #{teacherId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1
     </select>
     </select>
     <select id="queryHasReatClass" resultType="java.util.Map">
     <select id="queryHasReatClass" resultType="java.util.Map">
         SELECT cgtm.class_group_id_ 'key',CASE WHEN COUNT(cs.id_) > 0 THEN 1 ELSE 0 END 'value'
         SELECT cgtm.class_group_id_ 'key',CASE WHEN COUNT(cs.id_) > 0 THEN 1 ELSE 0 END 'value'
         FROM class_group_teacher_mapper cgtm
         FROM class_group_teacher_mapper cgtm
         LEFT JOIN course_schedule cs ON cs.class_group_id_ = cgtm.class_group_id_
         LEFT JOIN course_schedule cs ON cs.class_group_id_ = cgtm.class_group_id_
         AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0
         AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0
-        WHERE cgtm.user_id_ = #{teacherId} AND cgtm.group_type_ = 'MUSIC' AND cs.pre_course_flag_ = 0 AND cgtm.class_group_id_ IN
+        WHERE cgtm.user_id_ = #{teacherId} AND cgtm.group_type_ = 'MUSIC' AND cs.pre_course_flag_ != 1 AND cgtm.class_group_id_ IN
         <foreach collection="classGroupIds" item="classGroupId" separator="," open="(" close=")">
         <foreach collection="classGroupIds" item="classGroupId" separator="," open="(" close=")">
             #{classGroupId}
             #{classGroupId}
         </foreach>
         </foreach>
@@ -3602,7 +3599,7 @@
             LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=#{teacherId}
             LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=#{teacherId}
         WHERE csts.user_id_=#{teacherId}
         WHERE csts.user_id_=#{teacherId}
         AND cs.class_date_ = DATE_FORMAT(#{startClassTime},'%Y-%m-%d')
         AND cs.class_date_ = DATE_FORMAT(#{startClassTime},'%Y-%m-%d')
-        AND cs.start_class_time_ &lt; DATE_FORMAT(#{startClassTime},'%H:%i:%S') AND cs.pre_course_flag_ = 0
+        AND cs.start_class_time_ &lt; DATE_FORMAT(#{startClassTime},'%H:%i:%S') AND cs.pre_course_flag_ != 1
         AND ta.sign_in_status_ IS NOT NULL
         AND ta.sign_in_status_ IS NOT NULL
         ORDER BY start_class_time_ DESC LIMIT 1;
         ORDER BY start_class_time_ DESC LIMIT 1;
     </select>
     </select>
@@ -3612,12 +3609,12 @@
 		(SELECT cs.type_ course_type_,SUM(TIMESTAMPDIFF(MINUTE,STR_TO_DATE(concat(cs.class_date_,' ',cs.start_class_time_),'%Y-%m-%d %H:%i:%s'),
 		(SELECT cs.type_ course_type_,SUM(TIMESTAMPDIFF(MINUTE,STR_TO_DATE(concat(cs.class_date_,' ',cs.start_class_time_),'%Y-%m-%d %H:%i:%s'),
         STR_TO_DATE(concat(cs.class_date_,' ',cs.end_class_time_),'%Y-%m-%d %H:%i:%s'))) remain_minutes_,COUNT(cs.id_) temp_merged_course_num_
         STR_TO_DATE(concat(cs.class_date_,' ',cs.end_class_time_),'%Y-%m-%d %H:%i:%s'))) remain_minutes_,COUNT(cs.id_) temp_merged_course_num_
 		FROM course_schedule cs WHERE FIND_IN_SET(cs.class_group_id_,#{classGroupIdList}) AND cs.status_ = 'NOT_START'
 		FROM course_schedule cs WHERE FIND_IN_SET(cs.class_group_id_,#{classGroupIdList}) AND cs.status_ = 'NOT_START'
-		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = 0) AND cs.member_flag_ = #{memberFlag} AND cs.pre_course_flag_ = 0 GROUP BY cs.type_
+		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = 0) AND cs.member_flag_ = #{memberFlag} AND cs.pre_course_flag_ != 1 GROUP BY cs.type_
 		UNION ALL
 		UNION ALL
 		SELECT ncs.type_ course_type_,SUM(TIMESTAMPDIFF(MINUTE,STR_TO_DATE(concat(ncs.class_date_,' ',ncs.start_class_time_),'%Y-%m-%d %H:%i:%s'),
 		SELECT ncs.type_ course_type_,SUM(TIMESTAMPDIFF(MINUTE,STR_TO_DATE(concat(ncs.class_date_,' ',ncs.start_class_time_),'%Y-%m-%d %H:%i:%s'),
         STR_TO_DATE(concat(ncs.class_date_,' ',ncs.end_class_time_),'%Y-%m-%d %H:%i:%s'))) remain_minutes_,COUNT(cs.id_) temp_merged_course_num_
         STR_TO_DATE(concat(ncs.class_date_,' ',ncs.end_class_time_),'%Y-%m-%d %H:%i:%s'))) remain_minutes_,COUNT(cs.id_) temp_merged_course_num_
 		FROM course_schedule cs LEFT JOIN course_schedule ncs ON ncs.id_ = cs.new_course_id_
 		FROM course_schedule cs LEFT JOIN course_schedule ncs ON ncs.id_ = cs.new_course_id_
-		WHERE FIND_IN_SET(cs.class_group_id_,#{classGroupIdList}) AND cs.new_course_id_ &gt; 0 AND ncs.status_ = 'NOT_START' AND cs.pre_course_flag_ = 0 AND cs.member_flag_ = #{memberFlag} GROUP BY ncs.type_) a
+		WHERE FIND_IN_SET(cs.class_group_id_,#{classGroupIdList}) AND cs.new_course_id_ &gt; 0 AND ncs.status_ = 'NOT_START' AND cs.pre_course_flag_ != 1 AND cs.member_flag_ = #{memberFlag} GROUP BY ncs.type_) a
 		group BY a.course_type_
 		group BY a.course_type_
     </select>
     </select>
 
 
@@ -3663,13 +3660,13 @@
     <select id="querySubCourseNumMap" resultType="java.util.Map">
     <select id="querySubCourseNumMap" resultType="java.util.Map">
         SELECT cs.type_ 'key',COUNT(CASE WHEN (CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()) THEN 1 ELSE NULL END) 'value'
         SELECT cs.type_ 'key',COUNT(CASE WHEN (CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()) THEN 1 ELSE NULL END) 'value'
         FROM course_schedule cs
         FROM course_schedule cs
-        WHERE cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ = 0
+        WHERE cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ != 1
         GROUP BY cs.type_
         GROUP BY cs.type_
     </select>
     </select>
     <select id="querySubCourseTimeMap" resultType="java.util.Map">
     <select id="querySubCourseTimeMap" resultType="java.util.Map">
         SELECT cs.type_ 'key',SUM(ROUND((UNIX_TIMESTAMP(CONCAT(cs.class_date_,' ',cs.end_class_time_)) - UNIX_TIMESTAMP(CONCAT(cs.class_date_,' ',cs.start_class_time_)))/60)) 'value'
         SELECT cs.type_ 'key',SUM(ROUND((UNIX_TIMESTAMP(CONCAT(cs.class_date_,' ',cs.end_class_time_)) - UNIX_TIMESTAMP(CONCAT(cs.class_date_,' ',cs.start_class_time_)))/60)) 'value'
         FROM course_schedule cs
         FROM course_schedule cs
-        WHERE cs.class_group_id_ = #{classGroupId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.pre_course_flag_ = 0
+        WHERE cs.class_group_id_ = #{classGroupId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.pre_course_flag_ != 1
         GROUP BY cs.type_
         GROUP BY cs.type_
     </select>
     </select>
     <select id="findClassMaxCourseNumMap" resultType="java.util.Map">
     <select id="findClassMaxCourseNumMap" resultType="java.util.Map">
@@ -3678,7 +3675,7 @@
         <foreach collection="classGroupIds" open="(" close=")" separator="," item="item">
         <foreach collection="classGroupIds" open="(" close=")" separator="," item="item">
             #{item}
             #{item}
         </foreach>
         </foreach>
-        AND CONCAT(cs.class_date_," ",cs.start_class_time_) > NOW() AND cs.pre_course_flag_ = 0
+        AND CONCAT(cs.class_date_," ",cs.start_class_time_) > NOW() AND cs.pre_course_flag_ != 1
         GROUP BY cs.class_group_id_,cs.type_)c
         GROUP BY cs.class_group_id_,cs.type_)c
         GROUP BY c.type_
         GROUP BY c.type_
     </select>
     </select>
@@ -3695,7 +3692,7 @@
                 #{item}
                 #{item}
             </foreach>
             </foreach>
         </if>
         </if>
-        AND CONCAT(cs.class_date_," ",cs.start_class_time_) > NOW() AND cs.pre_course_flag_ = 0
+        AND CONCAT(cs.class_date_," ",cs.start_class_time_) > NOW() AND cs.pre_course_flag_ != 1
         GROUP BY cssp.course_schedule_id_
         GROUP BY cssp.course_schedule_id_
     </select>
     </select>
     <select id="findNoStudentCourseIds" resultType="Long">
     <select id="findNoStudentCourseIds" resultType="Long">
@@ -3754,7 +3751,7 @@
             LEFT JOIN practice_group vg ON vg.id_ = cs.music_group_id_
             LEFT JOIN practice_group vg ON vg.id_ = cs.music_group_id_
         </if>
         </if>
         WHERE cssp.user_id_ = #{studentId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()
         WHERE cssp.user_id_ = #{studentId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()
-        AND vg.educational_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
+        AND vg.educational_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ != 1
         <include refid="global.limit"/>
         <include refid="global.limit"/>
     </select>
     </select>
     <select id="countStudentNoStartCourse" resultType="int">
     <select id="countStudentNoStartCourse" resultType="int">
@@ -3767,7 +3764,7 @@
             LEFT JOIN practice_group vg ON vg.id_ = cs.music_group_id_
             LEFT JOIN practice_group vg ON vg.id_ = cs.music_group_id_
         </if>
         </if>
         WHERE cssp.user_id_ = #{studentId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()
         WHERE cssp.user_id_ = #{studentId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()
-        AND vg.educational_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
+        AND vg.educational_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ != 1
     </select>
     </select>
     <select id="findCoursesByClassGroupIdAndCourseIds" resultMap="CourseSchedule">
     <select id="findCoursesByClassGroupIdAndCourseIds" resultMap="CourseSchedule">
         SELECT * FROM course_schedule WHERE class_group_id_ = #{classGroupId}
         SELECT * FROM course_schedule WHERE class_group_id_ = #{classGroupId}
@@ -3795,7 +3792,7 @@
             AND cs.start_class_time_ >= DATE_FORMAT(#{startTime},'%H:%i:%S')
             AND cs.start_class_time_ >= DATE_FORMAT(#{startTime},'%H:%i:%S')
             AND cs.end_class_time_ <= DATE_FORMAT(#{endTime},'%H:%i:%S')
             AND cs.end_class_time_ <= DATE_FORMAT(#{endTime},'%H:%i:%S')
             AND cs.group_type_ = 'MUSIC'
             AND cs.group_type_ = 'MUSIC'
-            AND cs.teach_mode_ = 'OFFLINE' AND cs.pre_course_flag_ = 0
+            AND cs.teach_mode_ = 'OFFLINE' AND cs.pre_course_flag_ != 1
         ORDER BY cs.id_ ASC
         ORDER BY cs.id_ ASC
     ]]></select>
     ]]></select>
     <select id="findHasCourseStudent" resultType="java.lang.Integer">
     <select id="findHasCourseStudent" resultType="java.lang.Integer">
@@ -3859,7 +3856,7 @@
             ( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
             ( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
-            AND csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
+            AND csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ != 1
             <if test="startDay!=null and startDay!=''">
             <if test="startDay!=null and startDay!=''">
                 AND cs.class_date_ &gt;= #{startDay}
                 AND cs.class_date_ &gt;= #{startDay}
             </if>
             </if>
@@ -3879,7 +3876,7 @@
             ( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
             ( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
-            AND cs.class_date_ &gt;= "2021-03-01" AND cs.pre_course_flag_ = 0
+            AND cs.class_date_ &gt;= "2021-03-01" AND cs.pre_course_flag_ != 1
             <if test="teacherId!=null">
             <if test="teacherId!=null">
                 AND csts.user_id_ = #{teacherId}
                 AND csts.user_id_ = #{teacherId}
             </if>
             </if>
@@ -3984,7 +3981,7 @@
         SELECT CONCAT(cs.class_date_,' ',cs.start_class_time_,'~',end_class_time_) start_class_time_ FROM course_schedule cs
         SELECT CONCAT(cs.class_date_,' ',cs.start_class_time_,'~',end_class_time_) start_class_time_ FROM course_schedule cs
         WHERE cs.class_date_ BETWEEN #{dto.startSchoolTerm} AND #{dto.endSchoolTerm}
         WHERE cs.class_date_ BETWEEN #{dto.startSchoolTerm} AND #{dto.endSchoolTerm}
         AND cs.class_group_id_ = #{dto.classGroupId} AND cs.type_ = #{dto.courseScheduleType}
         AND cs.class_group_id_ = #{dto.classGroupId} AND cs.type_ = #{dto.courseScheduleType}
-        AND cs.is_lock_ = 0 AND cs.pre_course_flag_ = 0 AND cs.del_flag_ = 0
+        AND cs.is_lock_ = 0 AND cs.pre_course_flag_ != 1 AND cs.del_flag_ = 0
         ORDER BY cs.class_date_,cs.start_class_time_
         ORDER BY cs.class_date_,cs.start_class_time_
     </select>
     </select>
     <select id="countCourseByClassAndType" resultType="int">
     <select id="countCourseByClassAndType" resultType="int">
@@ -3996,7 +3993,7 @@
         <if test="dto.endSchoolTerm != null">
         <if test="dto.endSchoolTerm != null">
             AND cs.class_date_ &lt;= DATE_FORMAT(#{dto.endSchoolTerm}, '%Y%m%d')
             AND cs.class_date_ &lt;= DATE_FORMAT(#{dto.endSchoolTerm}, '%Y%m%d')
         </if>
         </if>
-        AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+        AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 AND cs.is_lock_ = 0
     </select>
     </select>
     <select id="getCourseNumNo" resultType="int">
     <select id="getCourseNumNo" resultType="int">
         SELECT COUNT(id_) FROM course_schedule
         SELECT COUNT(id_) FROM course_schedule
@@ -4052,7 +4049,7 @@
     <select id="queryHasCourseStudentIds" resultType="java.lang.Integer">
     <select id="queryHasCourseStudentIds" resultType="java.lang.Integer">
         SELECT DISTINCT s.user_id_ FROM student s
         SELECT DISTINCT s.user_id_ FROM student s
         LEFT JOIN course_schedule_student_payment cssp ON s.user_id_ = cssp.user_id_
         LEFT JOIN course_schedule_student_payment cssp ON s.user_id_ = cssp.user_id_
-        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.group_type_ = #{groupType} AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.group_type_ = #{groupType} AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1
         LEFT JOIN sys_user su ON su.id_ = s.user_id_
         LEFT JOIN sys_user su ON su.id_ = s.user_id_
         WHERE 1=1 and s.tenant_id_ = #{tenantId}
         WHERE 1=1 and s.tenant_id_ = #{tenantId}
         <if test="hasMember != null">
         <if test="hasMember != null">
@@ -4100,7 +4097,7 @@
     <sql id="queryCourseEvaluateSql">
     <sql id="queryCourseEvaluateSql">
         <where>
         <where>
             cs.status_ = 'OVER' AND ta.sign_in_time_ IS NOT NULL AND cs.group_type_ != 'LIVE'
             cs.status_ = 'OVER' AND ta.sign_in_time_ IS NOT NULL AND cs.group_type_ != 'LIVE'
-            AND cs.del_flag_ = 0 AND (cs.is_lock_ = 0 OR cs.is_lock_ IS NULL) AND cs.pre_course_flag_ = 0
+            AND cs.del_flag_ = 0 AND (cs.is_lock_ = 0 OR cs.is_lock_ IS NULL) AND cs.pre_course_flag_ != 1
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_) AND sa.id_ IS NOT NULL
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_) AND sa.id_ IS NOT NULL
             <if test="teacherId != null">
             <if test="teacherId != null">
                 AND ta.teacher_id_ = #{teacherId}
                 AND ta.teacher_id_ = #{teacherId}
@@ -4368,7 +4365,7 @@
         select cs.type_ scheduleType,COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 END) subCourseNum,
         select cs.type_ scheduleType,COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 END) subCourseNum,
                COUNT(cs.id_) totalCourseNum
                COUNT(cs.id_) totalCourseNum
         from course_schedule cs
         from course_schedule cs
-        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
         AND cs.class_date_ BETWEEN #{startTerm} AND #{endTerm}
         AND cs.class_date_ BETWEEN #{startTerm} AND #{endTerm}
         AND cs.music_group_id_ IN
         AND cs.music_group_id_ IN
         <foreach collection="musicGroupIds" item="musicGroupId" open="(" separator="," close=")">
         <foreach collection="musicGroupIds" item="musicGroupId" open="(" separator="," close=")">
@@ -4386,7 +4383,7 @@
     <select id="getDailySummaryOfClassesForTheCurrentSemester" resultMap="DailySummaryMap">
     <select id="getDailySummaryOfClassesForTheCurrentSemester" resultMap="DailySummaryMap">
         select cs.class_date_ courseDate,cs.type_ scheduleType,COUNT(cs.id_) totalCourseNum
         select cs.class_date_ courseDate,cs.type_ scheduleType,COUNT(cs.id_) totalCourseNum
         from course_schedule cs
         from course_schedule cs
-        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
         AND cs.class_date_ BETWEEN #{startTerm} AND #{endTerm}
         AND cs.class_date_ BETWEEN #{startTerm} AND #{endTerm}
         AND cs.music_group_id_ IN
         AND cs.music_group_id_ IN
         <foreach collection="musicGroupIds" item="musicGroupId" open="(" separator="," close=")">
         <foreach collection="musicGroupIds" item="musicGroupId" open="(" separator="," close=")">
@@ -4398,7 +4395,7 @@
         select cs.id_ courseId,CONCAT(cs.class_date_,' ',cs.start_class_time_,'~',cs.end_class_time_) classDate,cs.status_ courseStatus,cs.name_ courseName,
         select cs.id_ courseId,CONCAT(cs.class_date_,' ',cs.start_class_time_,'~',cs.end_class_time_) classDate,cs.status_ courseStatus,cs.name_ courseName,
         actual_teacher_id_ teacherId,cs.music_group_id_ musicGroupId,cs.teach_mode_ teachMode
         actual_teacher_id_ teacherId,cs.music_group_id_ musicGroupId,cs.teach_mode_ teachMode
         from course_schedule cs
         from course_schedule cs
-        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
         <if test="classDate != null and classDate != ''">
         <if test="classDate != null and classDate != ''">
             AND cs.class_date_ = #{classDate}
             AND cs.class_date_ = #{classDate}
         </if>
         </if>
@@ -4470,7 +4467,7 @@
     <select id="getTeacherContinuousCourse" resultMap="CourseSchedule">
     <select id="getTeacherContinuousCourse" resultMap="CourseSchedule">
         SELECT <include refid="resultSql"/> FROM course_schedule cs
         SELECT <include refid="resultSql"/> FROM course_schedule cs
         WHERE cs.class_group_id_ = #{classGroupId}
         WHERE cs.class_group_id_ = #{classGroupId}
-        AND cs.actual_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ = 0 AND cs.class_date_ = #{classDate}
+        AND cs.actual_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ != 1 AND cs.class_date_ = #{classDate}
         ORDER BY cs.class_date_ DESC,cs.end_class_time_ DESC
         ORDER BY cs.class_date_ DESC,cs.end_class_time_ DESC
     </select>
     </select>
 
 
@@ -4482,7 +4479,7 @@
         left join course_schedule_student_payment cssp ON cs.id_ = cssp.course_schedule_id_
         left join course_schedule_student_payment cssp ON cs.id_ = cssp.course_schedule_id_
         left join organization o ON o.id_ = cs.organ_id_
         left join organization o ON o.id_ = cs.organ_id_
         where DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND cssp.actual_price_ > 0
         where DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND cssp.actual_price_ > 0
-          AND cs.del_flag_ = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ = 0
+          AND cs.del_flag_ = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ != 1
           AND cs.tenant_id_ = 1
           AND cs.tenant_id_ = 1
         group by cs.id_ order by cs.organ_id_;
         group by cs.id_ order by cs.organ_id_;
     </select>
     </select>

+ 16 - 16
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -256,7 +256,7 @@
 			(cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
 			(cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
 			AND cssp.user_id_ = #{userId}
 			AND cssp.user_id_ = #{userId}
 			AND CONCAT(cs.class_date_	,' ',cs.start_class_time_) &gt; NOW()
 			AND CONCAT(cs.class_date_	,' ',cs.start_class_time_) &gt; NOW()
-			AND cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ = 0
+			AND cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ != 1
     </select>
     </select>
 	<select id="countAllCourseFee" resultType="java.math.BigDecimal">
 	<select id="countAllCourseFee" resultType="java.math.BigDecimal">
 		SELECT
 		SELECT
@@ -266,7 +266,7 @@
 			LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
 			LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
 		WHERE
 		WHERE
 		(cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
 		(cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-		AND cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ = 0
+		AND cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ != 1
     </select>
     </select>
 	<select id="findNotStartCourseStudentPaymentIdsWithClassGroupAndStudent" resultType="int">
 	<select id="findNotStartCourseStudentPaymentIdsWithClassGroupAndStudent" resultType="int">
 		SELECT
 		SELECT
@@ -277,7 +277,7 @@
 		WHERE
 		WHERE
 			cssp.class_group_id_ = #{classGroupId}
 			cssp.class_group_id_ = #{classGroupId}
 			AND cssp.user_id_ = #{userId}
 			AND cssp.user_id_ = #{userId}
-			AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.pre_course_flag_ = 0
+			AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.pre_course_flag_ != 1
 	</select>
 	</select>
 	<select id="findNotStartCourseStudentPaymentsWithClassGroupAndStudent" resultMap="CourseScheduleStudentPayment">
 	<select id="findNotStartCourseStudentPaymentsWithClassGroupAndStudent" resultMap="CourseScheduleStudentPayment">
 		SELECT
 		SELECT
@@ -288,7 +288,7 @@
 		WHERE
 		WHERE
 			cssp.class_group_id_ = #{classGroupId}
 			cssp.class_group_id_ = #{classGroupId}
 			AND cssp.user_id_ = #{userId}
 			AND cssp.user_id_ = #{userId}
-			AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.pre_course_flag_ = 0
+			AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.pre_course_flag_ != 1
 	</select>
 	</select>
 
 
     <select id="findVipGroupCoursePrice" resultType="java.math.BigDecimal">
     <select id="findVipGroupCoursePrice" resultType="java.math.BigDecimal">
@@ -312,7 +312,7 @@
 			#{item}
 			#{item}
 		</foreach>
 		</foreach>
 		AND cs.group_type_ = #{groupType} AND cssp.user_id_ = #{userId}
 		AND cs.group_type_ = #{groupType} AND cssp.user_id_ = #{userId}
-		AND cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+		AND cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1
 		GROUP BY cssp.music_group_id_
 		GROUP BY cssp.music_group_id_
 	</select>
 	</select>
     <select id="countStudentCourseNumWithGroup" resultType="int">
     <select id="countStudentCourseNumWithGroup" resultType="int">
@@ -473,7 +473,7 @@
 			LEFT JOIN course_schedule_student_payment cssp ON s.user_id_=cssp.user_id_
 			LEFT JOIN course_schedule_student_payment cssp ON s.user_id_=cssp.user_id_
 			LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
 			LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
 			LEFT JOIN class_group_teacher_mapper cgtm ON cssp.class_group_id_=cgtm.class_group_id_
 			LEFT JOIN class_group_teacher_mapper cgtm ON cssp.class_group_id_=cgtm.class_group_id_
-		WHERE cs.type_ IN ('PRACTICE', 'VIP', 'SINGLE', 'MIX') AND cs.pre_course_flag_ = 0 AND cgtm.teacher_role_='BISHOP' and s.tenant_id_ = #{tenantId};
+		WHERE cs.type_ IN ('PRACTICE', 'VIP', 'SINGLE', 'MIX') AND cs.pre_course_flag_ != 1 AND cgtm.teacher_role_='BISHOP' and s.tenant_id_ = #{tenantId};
 	</select>
 	</select>
     <select id="findCoursePayment" resultType="map">
     <select id="findCoursePayment" resultType="map">
 		SELECT
 		SELECT
@@ -495,7 +495,7 @@
 		<if test="courseScheduleType != null">
 		<if test="courseScheduleType != null">
 		AND cs.type_= #{courseScheduleType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 		AND cs.type_= #{courseScheduleType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 		</if>
 		</if>
-		AND CONCAT(cs.class_date_, ' ', cs.start_class_time_) &gt; NOW() AND cs.pre_course_flag_ = 0 AND cs.del_flag_ = 0 AND cs.is_lock_ = 0
+		AND CONCAT(cs.class_date_, ' ', cs.start_class_time_) &gt; NOW() AND cs.pre_course_flag_ != 1 AND cs.del_flag_ = 0 AND cs.is_lock_ = 0
 	</select>
 	</select>
 	<select id="countStudentsNotStartCourseNumWithCourseType" resultType="map">
 	<select id="countStudentsNotStartCourseNumWithCourseType" resultType="map">
 		SELECT cssp.user_id_ 'key',COUNT(DISTINCT cssp.course_schedule_id_) 'value'
 		SELECT cssp.user_id_ 'key',COUNT(DISTINCT cssp.course_schedule_id_) 'value'
@@ -508,7 +508,7 @@
 		<if test="courseScheduleType != null">
 		<if test="courseScheduleType != null">
 			AND cs.type_= #{courseScheduleType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			AND cs.type_= #{courseScheduleType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 		</if>
 		</if>
-		AND CONCAT(cs.class_date_, ' ', cs.start_class_time_) &gt; NOW() AND cs.pre_course_flag_ = 0 AND cs.del_flag_ = 0 AND cs.is_lock_ = 0
+		AND CONCAT(cs.class_date_, ' ', cs.start_class_time_) &gt; NOW() AND cs.pre_course_flag_ != 1 AND cs.del_flag_ = 0 AND cs.is_lock_ = 0
 		GROUP BY cssp.user_id_
 		GROUP BY cssp.user_id_
 	</select>
 	</select>
 	<select id="queryMidiByUserIdsAndCourseId" resultType="java.util.Map">
 	<select id="queryMidiByUserIdsAndCourseId" resultType="java.util.Map">
@@ -573,7 +573,7 @@
 			LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
 			LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
 		WHERE
 		WHERE
 			cssp.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			cssp.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-			AND cssp.music_group_id_ = #{groupId} AND cs.pre_course_flag_ = 0
+			AND cssp.music_group_id_ = #{groupId} AND cs.pre_course_flag_ != 1
 			AND CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) > NOW( )
 			AND CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) > NOW( )
 	</select>
 	</select>
 
 
@@ -588,7 +588,7 @@
 		<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
 		<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
 			#{classGroupId}
 			#{classGroupId}
 		</foreach>
 		</foreach>
-        AND cs.status_ = 'NOT_START' AND cs.pre_course_flag_ = 0 ORDER BY cssp.id_ ASC
+        AND cs.status_ = 'NOT_START' AND cs.pre_course_flag_ != 1 ORDER BY cssp.id_ ASC
 	</select>
 	</select>
 
 
 	<select id="findStudentLastCourseSchedule" resultType="java.util.Map">
 	<select id="findStudentLastCourseSchedule" resultType="java.util.Map">
@@ -603,7 +603,7 @@
 			<foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
 			<foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
 				#{studentId}
 				#{studentId}
 			</foreach>
 			</foreach>
-			AND CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt; NOW( ) AND cs.pre_course_flag_ = 0
+			AND CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt; NOW( ) AND cs.pre_course_flag_ != 1
 		GROUP BY user_id_;
 		GROUP BY user_id_;
 	</select>
 	</select>
 
 
@@ -662,7 +662,7 @@
 			LEFT JOIN course_schedule cs1 ON cs.new_course_id_=cs1.id_
 			LEFT JOIN course_schedule cs1 ON cs.new_course_id_=cs1.id_
 		WHERE
 		WHERE
 			cssp.batch_no_ IS NOT NULL
 			cssp.batch_no_ IS NOT NULL
-			AND cs.id_ IS NOT NULL AND cs.pre_course_flag_ = 0
+			AND cs.id_ IS NOT NULL AND cs.pre_course_flag_ != 1
 			AND (((cs.status_ IN ('OVER', 'UNDERWAY') OR cs1.status_ IN ( 'OVER', 'UNDERWAY' ))
 			AND (((cs.status_ IN ('OVER', 'UNDERWAY') OR cs1.status_ IN ( 'OVER', 'UNDERWAY' ))
 			          AND (cssp.actual_price_ IS NULL OR cssp.actual_price_ &lt; cssp.expect_price_))
 			          AND (cssp.actual_price_ IS NULL OR cssp.actual_price_ &lt; cssp.expect_price_))
 			OR ( cs.status_ = 'NOT_START' AND cssp.actual_price_ IS NOT NULL AND cssp.actual_price_ &gt; 0))
 			OR ( cs.status_ = 'NOT_START' AND cssp.actual_price_ IS NOT NULL AND cssp.actual_price_ &gt; 0))
@@ -702,7 +702,7 @@
 				#{item}
 				#{item}
 			</foreach>
 			</foreach>
 		</if>
 		</if>
-		AND CONCAT(cs.class_date_," ",cs.start_class_time_) > NOW() AND cs.pre_course_flag_ = 0
+		AND CONCAT(cs.class_date_," ",cs.start_class_time_) > NOW() AND cs.pre_course_flag_ != 1
 		GROUP BY cssp.id_
 		GROUP BY cssp.id_
 	</select>
 	</select>
 	<select id="queryByIdsAndStudentId" resultMap="CourseScheduleStudentPayment">
 	<select id="queryByIdsAndStudentId" resultMap="CourseScheduleStudentPayment">
@@ -729,7 +729,7 @@
 		  </if>
 		  </if>
 		  AND cs.class_date_&lt;#{monday}
 		  AND cs.class_date_&lt;#{monday}
 		  AND cs.type_=#{courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 		  AND cs.type_=#{courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-		  AND (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
+		  AND (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1
 		ORDER BY CONCAT(cs.class_date_, ' ', cs.start_class_time_) DESC LIMIT 1
 		ORDER BY CONCAT(cs.class_date_, ' ', cs.start_class_time_) DESC LIMIT 1
 	</select>
 	</select>
 
 
@@ -743,7 +743,7 @@
 		SELECT SUM(cssp.expect_price_) FROM course_schedule_student_payment cssp
 		SELECT SUM(cssp.expect_price_) FROM course_schedule_student_payment cssp
 		LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
 		LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
 		WHERE cssp.class_group_id_ = #{classGroupId} AND cssp.user_id_ = #{studentId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()
 		WHERE cssp.class_group_id_ = #{classGroupId} AND cssp.user_id_ = #{studentId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()
-		AND cs.pre_course_flag_ = 0
+		AND cs.pre_course_flag_ != 1
 	  <if test="courseType != null">
 	  <if test="courseType != null">
 		  AND cs.type_ = #{courseType}
 		  AND cs.type_ = #{courseType}
 	  </if>
 	  </if>
@@ -1115,7 +1115,7 @@
 		select cs.organ_id_ 'key',SUM(cssp.actual_price_) 'value' from course_schedule_student_payment cssp
 		select cs.organ_id_ 'key',SUM(cssp.actual_price_) 'value' from course_schedule_student_payment cssp
 		left join course_schedule cs ON cs.id_ = cssp.course_schedule_id_
 		left join course_schedule cs ON cs.id_ = cssp.course_schedule_id_
 		where cs.class_date_ BETWEEN #{cutFirstDayOfMonth} AND #{cutLastDayOfMonth} AND cssp.actual_price_ > 0
 		where cs.class_date_ BETWEEN #{cutFirstDayOfMonth} AND #{cutLastDayOfMonth} AND cssp.actual_price_ > 0
-		AND cs.del_flag_ = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ = 0 AND cs.tenant_id_ = 1
+		AND cs.del_flag_ = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ != 1 AND cs.tenant_id_ = 1
 		group by cs.organ_id_
 		group by cs.organ_id_
 	</select>
 	</select>
 
 

+ 11 - 11
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -188,7 +188,7 @@
 
 
 	<sql id="courseScheduleTeacherSalaryQueryPage">
 	<sql id="courseScheduleTeacherSalaryQueryPage">
 		<where>
 		<where>
-			(cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
+			(cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1
 			AND csts.settlement_time_ IS NOT NULL AND csts.teacher_role_ IS NOT NULL AND cs.type_ IS NOT NULL
 			AND csts.settlement_time_ IS NOT NULL AND csts.teacher_role_ IS NOT NULL AND cs.type_ IS NOT NULL
 			<if test="organId != null">
 			<if test="organId != null">
 				AND su.organ_id_ = #{organId}
 				AND su.organ_id_ = #{organId}
@@ -442,7 +442,7 @@
 		FROM
 		FROM
 			course_schedule cs
 			course_schedule cs
 			LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
 			LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
-		WHERE cs.class_group_id_ = #{classGroupId} AND cs.id_ IS NOT NULL AND cs.status_='OVER' AND cs.pre_course_flag_ = 0
+		WHERE cs.class_group_id_ = #{classGroupId} AND cs.id_ IS NOT NULL AND cs.status_='OVER' AND cs.pre_course_flag_ != 1
 		GROUP BY cs.teach_mode_
 		GROUP BY cs.teach_mode_
     </select>
     </select>
 
 
@@ -456,7 +456,7 @@
 			</if>
 			</if>
 			csts.update_time_ = now()
 			csts.update_time_ = now()
 		WHERE csts.user_id_ = #{userId} AND csts.class_group_id_ = #{classGroupId} AND csts.settlement_time_ IS NULL
 		WHERE csts.user_id_ = #{userId} AND csts.class_group_id_ = #{classGroupId} AND csts.settlement_time_ IS NULL
-		  AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &gt;= #{startDateTime} AND cs.pre_course_flag_ = 0
+		  AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &gt;= #{startDateTime} AND cs.pre_course_flag_ != 1
 	</update>
 	</update>
 	
 	
     <update id="batchUpdateTeacherExpectSalary">
     <update id="batchUpdateTeacherExpectSalary">
@@ -612,7 +612,7 @@
 		WHERE
 		WHERE
 			csts.group_type_ = #{groupType}
 			csts.group_type_ = #{groupType}
 			AND csts.music_group_id_ = #{groupId}
 			AND csts.music_group_id_ = #{groupId}
-			AND CONCAT(cs.class_date_, ' ', cs.start_class_time_)>NOW() AND cs.pre_course_flag_ = 0
+			AND CONCAT(cs.class_date_, ' ', cs.start_class_time_)>NOW() AND cs.pre_course_flag_ != 1
 	</select>
 	</select>
 
 
     <delete id="deleteByMusicGroupId" parameterType="map" >
     <delete id="deleteByMusicGroupId" parameterType="map" >
@@ -633,7 +633,7 @@
 		FROM course_schedule_teacher_salary ts
 		FROM course_schedule_teacher_salary ts
 		LEFT JOIN course_schedule cs ON ts.course_schedule_id_ = cs.id_
 		LEFT JOIN course_schedule cs ON ts.course_schedule_id_ = cs.id_
 		WHERE FIND_IN_SET(cs.type_, #{typeList}) AND ts.user_id_ = #{userId} AND ts.settlement_time_ IS NULL
 		WHERE FIND_IN_SET(cs.type_, #{typeList}) AND ts.user_id_ = #{userId} AND ts.settlement_time_ IS NULL
-		AND cs.class_date_ &gt;= #{startClassDate} AND cs.pre_course_flag_ = 0
+		AND cs.class_date_ &gt;= #{startClassDate} AND cs.pre_course_flag_ != 1
 	</select>
 	</select>
     <select id="findByTeacher" resultMap="CourseScheduleTeacherSalary">
     <select id="findByTeacher" resultMap="CourseScheduleTeacherSalary">
 		SELECT
 		SELECT
@@ -746,7 +746,7 @@
 		LEFT JOIN school s ON s.id_ = cs.schoole_id_
 		LEFT JOIN school s ON s.id_ = cs.schoole_id_
 		LEFT JOIN music_group mg ON mg.id_ = ts.music_group_id_ AND ts.group_type_ = 'MUSIC'
 		LEFT JOIN music_group mg ON mg.id_ = ts.music_group_id_ AND ts.group_type_ = 'MUSIC'
 		LEFT JOIN organization mgo ON mgo.id_ = cs.organ_id_
 		LEFT JOIN organization mgo ON mgo.id_ = cs.organ_id_
-		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND cs.`del_flag_` = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ = 0
+		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND cs.`del_flag_` = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ != 1
 		AND cs.group_type_ = 'MUSIC' AND ts.settlement_time_ IS NOT NULL
 		AND cs.group_type_ = 'MUSIC' AND ts.settlement_time_ IS NOT NULL
 		AND t.is_settlement_salary_ = 1 and ts.tenant_id_ = #{tenantId}
 		AND t.is_settlement_salary_ = 1 and ts.tenant_id_ = #{tenantId}
 		<if test="courseTypeList != null">
 		<if test="courseTypeList != null">
@@ -785,7 +785,7 @@
 		LEFT JOIN vip_group_activity vga ON vg.vip_group_activity_id_ = vga.id_
 		LEFT JOIN vip_group_activity vga ON vg.vip_group_activity_id_ = vga.id_
 		LEFT JOIN organization vgo ON vgo.id_ = cs.organ_id_
 		LEFT JOIN organization vgo ON vgo.id_ = cs.organ_id_
 		left join vip_group_category vgc on vgc.id_ = vg.vip_group_category_id_
 		left join vip_group_category vgc on vgc.id_ = vg.vip_group_category_id_
-		WHERE vg.organ_id_ != 41 AND DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND cs.`del_flag_` = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ = 0
+		WHERE vg.organ_id_ != 41 AND DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND cs.`del_flag_` = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ != 1
 		AND cs.group_type_ = #{groupType} AND ts.settlement_time_ IS NOT NULL
 		AND cs.group_type_ = #{groupType} AND ts.settlement_time_ IS NOT NULL
 		AND t.is_settlement_salary_ = 1 and ts.tenant_id_ = #{tenantId}
 		AND t.is_settlement_salary_ = 1 and ts.tenant_id_ = #{tenantId}
 		<if test="courseTypeList != null">
 		<if test="courseTypeList != null">
@@ -824,7 +824,7 @@
 		LEFT JOIN `student_attendance` sa ON sa.`course_schedule_id_` = ts.`course_schedule_id_`
 		LEFT JOIN `student_attendance` sa ON sa.`course_schedule_id_` = ts.`course_schedule_id_`
 		LEFT JOIN practice_group pg ON pg.id_ = ts.music_group_id_ AND ts.group_type_ = 'PRACTICE'
 		LEFT JOIN practice_group pg ON pg.id_ = ts.music_group_id_ AND ts.group_type_ = 'PRACTICE'
 		LEFT JOIN organization pgo ON pgo.id_ = cs.organ_id_
 		LEFT JOIN organization pgo ON pgo.id_ = cs.organ_id_
-		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND cs.`del_flag_` = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ = 0
+		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND cs.`del_flag_` = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ != 1
 		AND cs.group_type_ = 'PRACTICE' AND ts.settlement_time_ IS NOT NULL
 		AND cs.group_type_ = 'PRACTICE' AND ts.settlement_time_ IS NOT NULL
 		AND t.is_settlement_salary_ = 1 and ts.tenant_id_ = #{tenantId}
 		AND t.is_settlement_salary_ = 1 and ts.tenant_id_ = #{tenantId}
 		<if test="courseTypeList != null">
 		<if test="courseTypeList != null">
@@ -851,7 +851,7 @@
     <select id="countTeacherGiveLesson" resultType="java.lang.Integer">
     <select id="countTeacherGiveLesson" resultType="java.lang.Integer">
 		SELECT COUNT(DISTINCT csts.id_) FROM course_schedule_teacher_salary csts
 		SELECT COUNT(DISTINCT csts.id_) FROM course_schedule_teacher_salary csts
 		LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
 		LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
-		WHERE NOW() >= CONCAT(cs.class_date_ ,' ',cs.end_class_time_) AND csts.user_id_ = #{userId} AND cs.pre_course_flag_ = 0
+		WHERE NOW() >= CONCAT(cs.class_date_ ,' ',cs.end_class_time_) AND csts.user_id_ = #{userId} AND cs.pre_course_flag_ != 1
 	</select>
 	</select>
 
 
 	<resultMap id="TeacherCourseSalaryDetail4WebDto" type="com.ym.mec.biz.dal.dto.TeacherCourseSalaryDetail4WebDto">
 	<resultMap id="TeacherCourseSalaryDetail4WebDto" type="com.ym.mec.biz.dal.dto.TeacherCourseSalaryDetail4WebDto">
@@ -1151,7 +1151,7 @@
 			( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
 			( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
 			AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
 			AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
 			AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
 			AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
-			AND csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
+			AND csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ != 1
 			<if test="startClassDay!=null and startClassDay!=''">
 			<if test="startClassDay!=null and startClassDay!=''">
 				AND cs.class_date_ &gt;= #{startClassDay}
 				AND cs.class_date_ &gt;= #{startClassDay}
 			</if>
 			</if>
@@ -1205,6 +1205,6 @@
 		WHERE cs.class_date_ = CURDATE()
 		WHERE cs.class_date_ = CURDATE()
 			AND ( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
 			AND ( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
 			AND ( cs.is_lock_ = 0 OR cs.is_lock_ IS NULL )
 			AND ( cs.is_lock_ = 0 OR cs.is_lock_ IS NULL )
-			AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ ) AND cs.pre_course_flag_ = 0
+			AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ ) AND cs.pre_course_flag_ != 1
 	</select>
 	</select>
 </mapper>
 </mapper>

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -344,7 +344,7 @@
         SELECT COUNT(DISTINCT cs.id_)
         SELECT COUNT(DISTINCT cs.id_)
         FROM course_schedule_teacher_salary csts
         FROM course_schedule_teacher_salary csts
         LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
         LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
-        AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+        AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1
         WHERE csts.user_id_ = #{employeeId}
         WHERE csts.user_id_ = #{employeeId}
     </select>
     </select>
 
 

+ 20 - 20
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -242,7 +242,7 @@
 				course_schedule_student_payment cssp
 				course_schedule_student_payment cssp
 				LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
 				LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
 			 WHERE
 			 WHERE
-				 cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+				 cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1
 			   AND ( cs.is_lock_ = 0 OR cs.is_lock_ IS NULL )
 			   AND ( cs.is_lock_ = 0 OR cs.is_lock_ IS NULL )
 			   AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ )
 			   AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ )
 			   AND cssp.group_type_ IN ('VIP', 'PRACTICE')
 			   AND cssp.group_type_ IN ('VIP', 'PRACTICE')
@@ -470,7 +470,7 @@
 		  	AND m.status_ = #{courseStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 		  	AND m.status_ = #{courseStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			AND (m.new_course_id_ IS NULL OR m.new_course_id_=m.id_)
 			AND (m.new_course_id_ IS NULL OR m.new_course_id_=m.id_)
 			AND NOT EXISTS (SELECT id_ FROM practice_group WHERE m.group_type_='PRACTICE' AND m.music_group_id_=id_ AND type_='TRIAL')
 			AND NOT EXISTS (SELECT id_ FROM practice_group WHERE m.group_type_='PRACTICE' AND m.music_group_id_=id_ AND type_='TRIAL')
-			AND m.organ_id_ IS NOT NULL AND m.pre_course_flag_ = 0 and m.tenant_id_ = #{tenantId}
+			AND m.organ_id_ IS NOT NULL AND m.pre_course_flag_ != 1 and m.tenant_id_ = #{tenantId}
 			<if test="groupType!=null">
 			<if test="groupType!=null">
 				AND m.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 				AND m.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			</if>
 			</if>
@@ -498,7 +498,7 @@
 			AND m.status_ = #{courseStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			AND m.status_ = #{courseStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			AND (m.new_course_id_ IS NULL OR m.new_course_id_=m.id_)
 			AND (m.new_course_id_ IS NULL OR m.new_course_id_=m.id_)
 			AND NOT EXISTS (SELECT id_ FROM practice_group WHERE m.group_type_='PRACTICE' AND m.music_group_id_=id_ AND type_='TRIAL')
 			AND NOT EXISTS (SELECT id_ FROM practice_group WHERE m.group_type_='PRACTICE' AND m.music_group_id_=id_ AND type_='TRIAL')
-			AND m.organ_id_ IS NOT NULL AND m.pre_course_flag_ = 0
+			AND m.organ_id_ IS NOT NULL AND m.pre_course_flag_ != 1
 			<if test="groupType!=null">
 			<if test="groupType!=null">
 				AND m.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 				AND m.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			</if>
 			</if>
@@ -523,7 +523,7 @@
 		AND (m.is_lock_ = 0 OR m.is_lock_ IS NULL)
 		AND (m.is_lock_ = 0 OR m.is_lock_ IS NULL)
 		AND (m.new_course_id_ IS NULL OR m.new_course_id_=m.id_)
 		AND (m.new_course_id_ IS NULL OR m.new_course_id_=m.id_)
 		AND NOT EXISTS (SELECT id_ FROM practice_group WHERE m.group_type_='PRACTICE' AND m.music_group_id_=id_ AND type_='TRIAL')
 		AND NOT EXISTS (SELECT id_ FROM practice_group WHERE m.group_type_='PRACTICE' AND m.music_group_id_=id_ AND type_='TRIAL')
-		AND m.organ_id_ IS NOT NULL AND m.pre_course_flag_ = 0
+		AND m.organ_id_ IS NOT NULL AND m.pre_course_flag_ != 1
 		<if test="groupType!=null">
 		<if test="groupType!=null">
 			AND m.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			AND m.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 		</if>
 		</if>
@@ -749,7 +749,7 @@
 		LEFT JOIN course_schedule cs ON cs.class_group_id_=cg.id_
 		LEFT JOIN course_schedule cs ON cs.class_group_id_=cg.id_
 		WHERE
 		WHERE
 		cg.type_ IN ('HIGH', 'HIGH_ONLINE') and cg.tenant_id_ = #{tenantId}
 		cg.type_ IN ('HIGH', 'HIGH_ONLINE') and cg.tenant_id_ = #{tenantId}
-		AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+		AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0 AND cs.pre_course_flag_ != 1
 		AND cs.del_flag_=0
 		AND cs.del_flag_=0
 		AND cs.status_='NOT_START'
 		AND cs.status_='NOT_START'
 		AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ )
 		AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ )
@@ -784,7 +784,7 @@
 		LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
 		LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
 		LEFT JOIN course_schedule cs ON cs.class_group_id_=cg.id_
 		LEFT JOIN course_schedule cs ON cs.class_group_id_=cg.id_
 		WHERE
 		WHERE
-		cg.type_ IN ('HIGH', 'HIGH_ONLINE') AND cs.pre_course_flag_ = 0 and cg.tenant_id_ = #{tenantId}
+		cg.type_ IN ('HIGH', 'HIGH_ONLINE') AND cs.pre_course_flag_ != 1 and cg.tenant_id_ = #{tenantId}
 		AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0
 		AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0
 		AND cs.del_flag_=0
 		AND cs.del_flag_=0
 		AND cs.status_='NOT_START'
 		AND cs.status_='NOT_START'
@@ -949,7 +949,7 @@
 			LEFT JOIN student_visit sv ON cssp.id_ = sv.object_id_
 			LEFT JOIN student_visit sv ON cssp.id_ = sv.object_id_
 		WHERE
 		WHERE
 				cs.status_ = 'OVER' AND sv.id_ IS NULL AND cs.del_flag_ = 0 AND cs.class_date_ >= #{startTime} AND cs.class_date_ &lt;= DATE_FORMAT(NOW(),'%Y-%m-%d')
 				cs.status_ = 'OVER' AND sv.id_ IS NULL AND cs.del_flag_ = 0 AND cs.class_date_ >= #{startTime} AND cs.class_date_ &lt;= DATE_FORMAT(NOW(),'%Y-%m-%d')
-				AND cssp.group_type_ IN ('MUSIC','PRACTICE','VIP') AND cs.pre_course_flag_ = 0 and cssp.tenant_id_ = #{tenantId}
+				AND cssp.group_type_ IN ('MUSIC','PRACTICE','VIP') AND cs.pre_course_flag_ != 1 and cssp.tenant_id_ = #{tenantId}
 			<if test="type!=null and type=='LEAVE'">
 			<if test="type!=null and type=='LEAVE'">
 				AND sa.status_ = 'LEAVE'
 				AND sa.status_ = 'LEAVE'
 			</if>
 			</if>
@@ -966,7 +966,7 @@
     <select id="getCourseTimeError" resultType="int">
     <select id="getCourseTimeError" resultType="int">
 		SELECT COUNT(cs.id_) FROM course_schedule cs
 		SELECT COUNT(cs.id_) FROM course_schedule cs
 		WHERE cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND cs.is_lock_ = 0 AND (cs.start_class_time_ &lt; #{courseStartTimeError} OR cs.end_class_time_ > #{courseEndTimeError})
 		WHERE cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND cs.is_lock_ = 0 AND (cs.start_class_time_ &lt; #{courseStartTimeError} OR cs.end_class_time_ > #{courseEndTimeError})
-		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN
 			AND cs.class_group_id_ IN
 			<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
 			<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
@@ -987,7 +987,7 @@
 		       COUNT(cs.id_) AS 'value'
 		       COUNT(cs.id_) AS 'value'
 		FROM course_schedule cs
 		FROM course_schedule cs
 		WHERE cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND cs.is_lock_ = 0 AND cs.start_class_time_ &lt; '06:00:00'
 		WHERE cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND cs.is_lock_ = 0 AND cs.start_class_time_ &lt; '06:00:00'
-		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN
 			AND cs.class_group_id_ IN
 			<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
 			<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
@@ -1007,7 +1007,7 @@
 		SELECT COUNT(DISTINCT c.id_) FROM (SELECT cs.id_ FROM course_schedule cs
 		SELECT COUNT(DISTINCT c.id_) FROM (SELECT cs.id_ FROM course_schedule cs
 		LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
 		LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
 		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
 		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
-		WHERE ta.teacher_id_ = cs.actual_teacher_id_ AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+		WHERE ta.teacher_id_ = cs.actual_teacher_id_ AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
 		AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_ >= #{startTime}
 		AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_ >= #{startTime}
 		AND ((ta.sign_in_status_ = 0 OR ta.sign_in_status_ IS NULL OR ta.sign_out_status_ = 0 OR ta.sign_out_status_ IS NULL)
 		AND ((ta.sign_in_status_ = 0 OR ta.sign_in_status_ IS NULL OR ta.sign_out_status_ = 0 OR ta.sign_out_status_ IS NULL)
 		         AND ta.complaints_content_ IS NULL AND ta.dispose_content_ IS NULL)
 		         AND ta.complaints_content_ IS NULL AND ta.dispose_content_ IS NULL)
@@ -1034,7 +1034,7 @@
 		LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
 		LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
 		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
 		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
 		LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
 		LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
-		WHERE cs.pre_course_flag_ = 0 AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_ >= #{startTime}
+		WHERE cs.pre_course_flag_ != 1 AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_ >= #{startTime}
 		AND (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0)) AND cssp.id_ IS NOT NULL
 		AND (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0)) AND cssp.id_ IS NOT NULL
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
@@ -1063,7 +1063,7 @@
 		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
 		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
 		LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
 		LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
 		WHERE ta.teacher_id_ = cs.actual_teacher_id_ and cs.tenant_id_ = #{tenantId}
 		WHERE ta.teacher_id_ = cs.actual_teacher_id_ and cs.tenant_id_ = #{tenantId}
-		AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_ >= #{startTime} AND cs.pre_course_flag_ = 0
+		AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_ >= #{startTime} AND cs.pre_course_flag_ != 1
 		AND (((ta.sign_in_status_ = 0 OR ta.sign_in_status_ IS NULL OR ta.sign_out_status_ = 0 OR ta.sign_out_status_ IS NULL) AND ta.dispose_content_ IS NULL) OR (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0)))
 		AND (((ta.sign_in_status_ = 0 OR ta.sign_in_status_ IS NULL OR ta.sign_out_status_ = 0 OR ta.sign_out_status_ IS NULL) AND ta.dispose_content_ IS NULL) OR (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0)))
 		AND (ta.sign_out_status_ IS NOT NULL OR ta.sign_in_status_ IS NOT NULL)
 		AND (ta.sign_out_status_ IS NOT NULL OR ta.sign_in_status_ IS NOT NULL)
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
@@ -1087,7 +1087,7 @@
 		SELECT COUNT(DISTINCT cs.id_) FROM course_schedule cs
 		SELECT COUNT(DISTINCT cs.id_) FROM course_schedule cs
 		LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
 		LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
 		WHERE ta.teacher_id_ = cs.actual_teacher_id_ and cs.tenant_id_ = #{tenantId}
 		WHERE ta.teacher_id_ = cs.actual_teacher_id_ and cs.tenant_id_ = #{tenantId}
-		AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_>=#{startTime} AND cs.pre_course_flag_ = 0
+		AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_>=#{startTime} AND cs.pre_course_flag_ != 1
 		AND ta.sign_in_time_ IS NULL AND ta.sign_out_time_ IS NULL AND ta.complaints_content_ IS NULL AND ta.dispose_content_ IS NULL
 		AND ta.sign_in_time_ IS NULL AND ta.sign_out_time_ IS NULL AND ta.complaints_content_ IS NULL AND ta.dispose_content_ IS NULL
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
@@ -1112,7 +1112,7 @@
 		FROM course_schedule cs
 		FROM course_schedule cs
 		LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
 		LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
 		WHERE ta.teacher_id_ = cs.actual_teacher_id_ and cs.tenant_id_ = #{tenantId}
 		WHERE ta.teacher_id_ = cs.actual_teacher_id_ and cs.tenant_id_ = #{tenantId}
-		AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_>=#{startTime} AND cs.pre_course_flag_ = 0
+		AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_>=#{startTime} AND cs.pre_course_flag_ != 1
 		AND ta.sign_in_time_ IS NULL AND ta.sign_out_time_ IS NULL AND ta.dispose_content_ IS NULL
 		AND ta.sign_in_time_ IS NULL AND ta.sign_out_time_ IS NULL AND ta.dispose_content_ IS NULL
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
@@ -1699,7 +1699,7 @@
 		SELECT COUNT(DISTINCT c.user_id_) FROM (
 		SELECT COUNT(DISTINCT c.user_id_) FROM (
 		SELECT sa.user_id_ FROM student_attendance sa
 		SELECT sa.user_id_ FROM student_attendance sa
 		LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
 		LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
-		WHERE cs.class_date_ BETWEEN #{firstDay} AND #{lastDay} AND sa.status_ = 'LEAVE' AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+		WHERE cs.class_date_ BETWEEN #{firstDay} AND #{lastDay} AND sa.status_ = 'LEAVE' AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
 		<if test="organIdList != null and organIdList.size > 0">
 		<if test="organIdList != null and organIdList.size > 0">
 			AND cs.organ_id_ IN
 			AND cs.organ_id_ IN
 			<foreach collection="organIdList" open="(" close=")" item="item" separator=",">
 			<foreach collection="organIdList" open="(" close=")" item="item" separator=",">
@@ -1720,7 +1720,7 @@
 		SELECT c.organ_id_ 'key',COUNT(c.user_id_) 'value' FROM (
 		SELECT c.organ_id_ 'key',COUNT(c.user_id_) 'value' FROM (
 		SELECT sa.user_id_,cs.organ_id_ FROM student_attendance sa
 		SELECT sa.user_id_,cs.organ_id_ FROM student_attendance sa
 		LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
 		LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
-		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') >= '2021-11' AND sa.status_ = 'LEAVE' AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') >= '2021-11' AND sa.status_ = 'LEAVE' AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN
 			AND cs.class_group_id_ IN
 			<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
 			<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
@@ -1742,7 +1742,7 @@
 		SELECT sa.user_id_ FROM student_attendance sa
 		SELECT sa.user_id_ FROM student_attendance sa
 		LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
 		LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
 		LEFT JOIN sys_user su ON su.id_ = sa.user_id_
 		LEFT JOIN sys_user su ON su.id_ = sa.user_id_
-		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') = #{currentMonth} AND sa.status_ = 'LEAVE' AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') = #{currentMonth} AND sa.status_ = 'LEAVE' AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
 		<if test="organIds != null">
 		<if test="organIds != null">
 			AND FIND_IN_SET(cs.organ_id_,#{organIds})
 			AND FIND_IN_SET(cs.organ_id_,#{organIds})
 		</if>
 		</if>
@@ -1777,7 +1777,7 @@
 		LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
 		LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
 		LEFT JOIN organization o ON o.id_ = cs.organ_id_
 		LEFT JOIN organization o ON o.id_ = cs.organ_id_
 		LEFT JOIN sys_user su ON su.id_ = sa.user_id_
 		LEFT JOIN sys_user su ON su.id_ = sa.user_id_
-		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') = #{currentMonth} AND sa.status_ = 'LEAVE' AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') = #{currentMonth} AND sa.status_ = 'LEAVE' AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
 		<if test="organIds != null">
 		<if test="organIds != null">
 			AND FIND_IN_SET(cs.organ_id_,#{organIds})
 			AND FIND_IN_SET(cs.organ_id_,#{organIds})
 		</if>
 		</if>
@@ -1805,7 +1805,7 @@
 	</select>
 	</select>
 	<sql id="queryStudentLeaveCourseListSql">
 	<sql id="queryStudentLeaveCourseListSql">
 		<where>
 		<where>
-			sa.user_id_ = #{userId} AND sa.status_ = 'LEAVE' AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+			sa.user_id_ = #{userId} AND sa.status_ = 'LEAVE' AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
 			<if test="search != null and search != ''">
 			<if test="search != null and search != ''">
 				AND (cs.id_ = #{search} OR cs.actual_teacher_id_ = #{search} OR su.real_name_ LIKE CONCAT('%',#{search},'%'))
 				AND (cs.id_ = #{search} OR cs.actual_teacher_id_ = #{search} OR su.real_name_ LIKE CONCAT('%',#{search},'%'))
 			</if>
 			</if>
@@ -1847,7 +1847,7 @@
 		FROM student_attendance sa
 		FROM student_attendance sa
 		LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
 		LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
 		LEFT JOIN sys_user su ON su.id_ = sa.user_id_
 		LEFT JOIN sys_user su ON su.id_ = sa.user_id_
-		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') BETWEEN #{totalMonth} AND #{currentMonth} AND sa.status_ = 'LEAVE' AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') BETWEEN #{totalMonth} AND #{currentMonth} AND sa.status_ = 'LEAVE' AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
 		<if test="organIds != null">
 		<if test="organIds != null">
 			AND FIND_IN_SET(cs.organ_id_,#{organIds})
 			AND FIND_IN_SET(cs.organ_id_,#{organIds})
 		</if>
 		</if>

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/InspectionItemPlanConclusionMapper.xml

@@ -105,7 +105,7 @@
         LEFT JOIN course_schedule cs ON iipc.course_schedule_id_ = cs.id_
         LEFT JOIN course_schedule cs ON iipc.course_schedule_id_ = cs.id_
         LEFT JOIN class_group cg ON cg.id_=cs.class_group_id_
         LEFT JOIN class_group cg ON cg.id_=cs.class_group_id_
         LEFT JOIN sys_user su on su.id_ = iipc.teacher_id_
         LEFT JOIN sys_user su on su.id_ = iipc.teacher_id_
-        WHERE iipc.plan_id_=#{planId} AND cs.pre_course_flag_ = 0
+        WHERE iipc.plan_id_=#{planId} AND cs.pre_course_flag_ != 1
         <if test="checkItem != null">
         <if test="checkItem != null">
             AND iipc.check_item_ = #{checkItem}
             AND iipc.check_item_ = #{checkItem}
         </if>
         </if>

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/LiveGroupPlusMapper.xml

@@ -71,7 +71,7 @@
     <if test="param.endTime != null">
     <if test="param.endTime != null">
         AND cs.class_date_ &lt;= date_format(#{param.endTime},'%Y-%m-%d')
         AND cs.class_date_ &lt;= date_format(#{param.endTime},'%Y-%m-%d')
     </if>
     </if>
-    AND csts.user_id_ = #{param.teacherId} AND cs.pre_course_flag_ = 0
+    AND csts.user_id_ = #{param.teacherId} AND cs.pre_course_flag_ != 1
     <if test="param.status != null">
     <if test="param.status != null">
         <if test="param.status == 'UNDERWAY'">
         <if test="param.status == 'UNDERWAY'">
             AND (cs.status_  = 'UNDERWAY'
             AND (cs.status_  = 'UNDERWAY'

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -533,7 +533,7 @@
         left join music_group mg on cg.music_group_id_ = mg.id_
         left join music_group mg on cg.music_group_id_ = mg.id_
         where cs.group_type_ = 'MUSIC' AND cg.group_type_ = 'MUSIC' and cs.tenant_id_ = #{tenantId}
         where cs.group_type_ = 'MUSIC' AND cg.group_type_ = 'MUSIC' and cs.tenant_id_ = #{tenantId}
         and DATE_FORMAT(cs.class_date_, '%Y%m' ) = DATE_FORMAT(CURDATE() , '%Y%m') and (cs.del_flag_ = 0 or cs.del_flag_
         and DATE_FORMAT(cs.class_date_, '%Y%m' ) = DATE_FORMAT(CURDATE() , '%Y%m') and (cs.del_flag_ = 0 or cs.del_flag_
-        is null) and mg.organ_id_ not in (36,38) AND cs.pre_course_flag_ = 0
+        is null) and mg.organ_id_ not in (36,38) AND cs.pre_course_flag_ != 1
         <if test="organId != null">
         <if test="organId != null">
             AND FIND_IN_SET(mg.organ_id_,#{organId})
             AND FIND_IN_SET(mg.organ_id_,#{organId})
         </if>
         </if>
@@ -747,7 +747,7 @@
         FROM course_schedule cs
         FROM course_schedule cs
                      LEFT JOIN music_group mg ON mg.id_ = cs.music_group_id_
                      LEFT JOIN music_group mg ON mg.id_ = cs.music_group_id_
         WHERE cs.actual_teacher_id_ = #{teacherId}
         WHERE cs.actual_teacher_id_ = #{teacherId}
-          AND cs.group_type_ = 'MUSIC' AND cs.pre_course_flag_ = 0
+          AND cs.group_type_ = 'MUSIC' AND cs.pre_course_flag_ != 1
         GROUP BY mg.id_
         GROUP BY mg.id_
     </select>
     </select>
     <select id="queryUserMusicInfos" resultMap="queryUserMusicGroupsMap">
     <select id="queryUserMusicInfos" resultMap="queryUserMusicGroupsMap">

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/MusicGroupTrainPlanMapper.xml

@@ -126,7 +126,7 @@
 		SELECT c.class_group_id_,c.type_,c.course_num_ - (CASE WHEN t.course_num_ IS NULL THEN 0 ELSE t.course_num_ END) num_,c.name_ FROM (
 		SELECT c.class_group_id_,c.type_,c.course_num_ - (CASE WHEN t.course_num_ IS NULL THEN 0 ELSE t.course_num_ END) num_,c.name_ FROM (
 		SELECT cs.class_group_id_,cs.type_,COUNT(cs.id_) course_num_,cg.name_ FROM course_schedule cs
 		SELECT cs.class_group_id_,cs.type_,COUNT(cs.id_) course_num_,cg.name_ FROM course_schedule cs
 		LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
 		LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
-		WHERE cs.music_group_id_ = #{dto.musicGroupId} AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+		WHERE cs.music_group_id_ = #{dto.musicGroupId} AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 AND cs.is_lock_ = 0
 		<if test="dto.startSchoolTerm != null">
 		<if test="dto.startSchoolTerm != null">
 			AND cs.class_date_ >= DATE_FORMAT(#{dto.startSchoolTerm}, '%Y%m%d')
 			AND cs.class_date_ >= DATE_FORMAT(#{dto.startSchoolTerm}, '%Y%m%d')
 		</if>
 		</if>
@@ -159,7 +159,7 @@
 		GROUP BY tp.class_group_id_,tp.course_type_) t
 		GROUP BY tp.class_group_id_,tp.course_type_) t
 		LEFT JOIN (
 		LEFT JOIN (
 		SELECT cs.class_group_id_,cs.type_,COUNT(cs.id_) course_num_,'' name_ FROM course_schedule cs
 		SELECT cs.class_group_id_,cs.type_,COUNT(cs.id_) course_num_,'' name_ FROM course_schedule cs
-		WHERE cs.music_group_id_ = #{dto.musicGroupId} AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+		WHERE cs.music_group_id_ = #{dto.musicGroupId} AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 AND cs.is_lock_ = 0
 		<if test="dto.startSchoolTerm != null">
 		<if test="dto.startSchoolTerm != null">
 			AND cs.class_date_ >= DATE_FORMAT(#{dto.startSchoolTerm}, '%Y%m%d')
 			AND cs.class_date_ >= DATE_FORMAT(#{dto.startSchoolTerm}, '%Y%m%d')
 		</if>
 		</if>

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/OperatingReportNewMapper.xml

@@ -190,7 +190,7 @@
 	<select id="sumCourseAmount" resultType="java.util.Map">
 	<select id="sumCourseAmount" resultType="java.util.Map">
 		SELECT cs.organ_id_ 'key',SUM(cssp.actual_price_) 'value' FROM course_schedule cs
 		SELECT cs.organ_id_ 'key',SUM(cssp.actual_price_) 'value' FROM course_schedule cs
 		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
 		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
-		where cs.del_flag_ = 0 AND cs.is_lock_ = 0 AND cs.pre_course_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+		where cs.del_flag_ = 0 AND cs.is_lock_ = 0 AND cs.pre_course_flag_ != 1 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
 		AND cssp.actual_price_ > 0 AND cs.class_date_ BETWEEN #{firstDay} AND #{lastDay}
 		AND cssp.actual_price_ > 0 AND cs.class_date_ BETWEEN #{firstDay} AND #{lastDay}
 		AND DATE_FORMAT(cs.create_time_,'%Y') = #{currentYear} AND cs.settlement_report_flag_ = 0 group by cs.organ_id_;
 		AND DATE_FORMAT(cs.create_time_,'%Y') = #{currentYear} AND cs.settlement_report_flag_ = 0 group by cs.organ_id_;
 	</select>
 	</select>
@@ -242,7 +242,7 @@
 	<select id="sumCoursePreAmount" resultType="java.util.Map">
 	<select id="sumCoursePreAmount" resultType="java.util.Map">
 		SELECT cs.organ_id_ 'key',SUM(cssp.actual_price_) 'value' FROM course_schedule cs
 		SELECT cs.organ_id_ 'key',SUM(cssp.actual_price_) 'value' FROM course_schedule cs
 		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
 		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
-		where cs.del_flag_ = 0 AND cs.is_lock_ = 0 AND cs.pre_course_flag_ = 0
+		where cs.del_flag_ = 0 AND cs.is_lock_ = 0 AND cs.pre_course_flag_ != 1
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_) AND cs.class_date_ > #{lastDay}
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_) AND cs.class_date_ > #{lastDay}
 		AND cs.group_type_ != 'MUSIC'
 		AND cs.group_type_ != 'MUSIC'
 		group by cs.organ_id_;
 		group by cs.organ_id_;

+ 6 - 6
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -289,7 +289,7 @@
 
 
     <sql id="queryCondition">
     <sql id="queryCondition">
         <where>
         <where>
-            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
             <if test="studentID != null">
             <if test="studentID != null">
                 and sa.user_id_ = #{studentID}
                 and sa.user_id_ = #{studentID}
             </if>
             </if>
@@ -352,7 +352,7 @@
             student_attendance sa
             student_attendance sa
             LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
             LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
             WHERE
             WHERE
-            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1
             AND sa.class_group_id_=#{classGroupId}
             AND sa.class_group_id_=#{classGroupId}
             AND sa.user_id_ IN
             AND sa.user_id_ IN
             <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
             <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
@@ -499,7 +499,7 @@
     </select>
     </select>
     <sql id="findStudentAttendanceSql">
     <sql id="findStudentAttendanceSql">
         <where>
         <where>
-            cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0 and cs.tenant_id_ = #{tenantId}
+            cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 AND cs.is_lock_ = 0 and cs.tenant_id_ = #{tenantId}
             <if test="visitFlag != null">
             <if test="visitFlag != null">
                 <if test="visitFlag == 1">
                 <if test="visitFlag == 1">
                     AND sa.visit_flag_ = 1
                     AND sa.visit_flag_ = 1
@@ -611,7 +611,7 @@
     </select>
     </select>
     <sql id="exportStudentAttendancesQueryPageSql">
     <sql id="exportStudentAttendancesQueryPageSql">
         <where>
         <where>
-                cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+                cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
             <if test="organId != null and organId != ''">
             <if test="organId != null and organId != ''">
                 AND FIND_IN_SET(cs.organ_id_,#{organId})
                 AND FIND_IN_SET(cs.organ_id_,#{organId})
             </if>
             </if>
@@ -664,7 +664,7 @@
     <select id="getLeaveNum" resultType="java.lang.Integer">
     <select id="getLeaveNum" resultType="java.lang.Integer">
         SELECT COUNT(sa.id_) FROM student_attendance sa
         SELECT COUNT(sa.id_) FROM student_attendance sa
         LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
         LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
-        WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND sa.user_id_ = #{userId} AND sa.status_ = 'LEAVE' AND cs.pre_course_flag_ = 0
+        WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND sa.user_id_ = #{userId} AND sa.status_ = 'LEAVE' AND cs.pre_course_flag_ != 1
         <if test="attendanceId != null">
         <if test="attendanceId != null">
             AND sa.id_ != #{attendanceId}
             AND sa.id_ != #{attendanceId}
         </if>
         </if>
@@ -672,7 +672,7 @@
     <select id="queryLeaveNum" resultType="java.util.Map">
     <select id="queryLeaveNum" resultType="java.util.Map">
         SELECT sa.user_id_ 'key',COUNT(sa.id_) 'value' FROM student_attendance sa
         SELECT sa.user_id_ 'key',COUNT(sa.id_) 'value' FROM student_attendance sa
         LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
         LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
-        WHERE sa.status_ = 'LEAVE' AND DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND cs.pre_course_flag_ = 0
+        WHERE sa.status_ = 'LEAVE' AND DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND cs.pre_course_flag_ != 1
         AND sa.user_id_ IN
         AND sa.user_id_ IN
         <foreach collection="userIds" item="userId" separator="," open="(" close=")">
         <foreach collection="userIds" item="userId" separator="," open="(" close=")">
             #{userId}
             #{userId}

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml

@@ -180,7 +180,7 @@
 
 
     <sql id="queryCondition">
     <sql id="queryCondition">
         <where>
         <where>
-            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
             <if test="createTime != null">
             <if test="createTime != null">
                 AND DATE_FORMAT(ch.create_time_,"%Y%m%d") = DATE_FORMAT(#{createTime},"%Y%m%d")
                 AND DATE_FORMAT(ch.create_time_,"%Y%m%d") = DATE_FORMAT(#{createTime},"%Y%m%d")
             </if>
             </if>
@@ -395,7 +395,7 @@
         LEFT JOIN course_homework ch ON ch.id_ = sch.course_homework_id_
         LEFT JOIN course_homework ch ON ch.id_ = sch.course_homework_id_
         LEFT JOIN course_schedule cs ON cs.id_ = sch.course_schedule_id_
         LEFT JOIN course_schedule cs ON cs.id_ = sch.course_schedule_id_
         LEFT JOIN sys_user su ON su.id_ = cs.actual_teacher_id_
         LEFT JOIN sys_user su ON su.id_ = cs.actual_teacher_id_
-        WHERE sch.user_id_=#{userId} AND cs.pre_course_flag_ = 0
+        WHERE sch.user_id_=#{userId} AND cs.pre_course_flag_ != 1
         AND DATE_FORMAT(class_date_, '%Y-%m')=DATE_FORMAT(#{classDate}, '%Y-%m')
         AND DATE_FORMAT(class_date_, '%Y-%m')=DATE_FORMAT(#{classDate}, '%Y-%m')
         <if test="finishStatus != null">
         <if test="finishStatus != null">
             <if test="finishStatus == true">
             <if test="finishStatus == true">

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml

@@ -961,7 +961,7 @@
         LEFT JOIN student_basic_info sbi ON sbi.user_id_ = sees.student_id_
         LEFT JOIN student_basic_info sbi ON sbi.user_id_ = sees.student_id_
         LEFT JOIN music_group mg ON mg.id_ = sees.music_group_id_
         LEFT JOIN music_group mg ON mg.id_ = sees.music_group_id_
         LEFT JOIN course_schedule_student_payment cssp ON cssp.music_group_id_ = sees.music_group_id_ AND cssp.user_id_ = sees.student_id_ AND cssp.group_type_ = 'MUSIC'
         LEFT JOIN course_schedule_student_payment cssp ON cssp.music_group_id_ = sees.music_group_id_ AND cssp.user_id_ = sees.student_id_ AND cssp.group_type_ = 'MUSIC'
-        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1
         AND cs.is_lock_ = 0 AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ ) AND cs.class_date_ BETWEEN #{monday} AND #{sunday}
         AND cs.is_lock_ = 0 AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ ) AND cs.class_date_ BETWEEN #{monday} AND #{sunday}
         LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_ AND sa.user_id_ = cssp.user_id_ AND sa.status_ IN ('NORMAL','LATE')
         LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_ AND sa.user_id_ = cssp.user_id_ AND sa.status_ IN ('NORMAL','LATE')
         WHERE sees.monday_ >= #{monday} AND sees.sunday_ &lt;= #{sunday}
         WHERE sees.monday_ >= #{monday} AND sees.sunday_ &lt;= #{sunday}

+ 6 - 6
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -301,7 +301,7 @@
 
 
     <sql id="studentManageCourseQueryCondition">
     <sql id="studentManageCourseQueryCondition">
         <where>
         <where>
-            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1
             AND cgsm.status_ != 'QUIT' and cg.tenant_id_ = #{tenantId}
             AND cgsm.status_ != 'QUIT' and cg.tenant_id_ = #{tenantId}
             <if test="studentId!=null">
             <if test="studentId!=null">
                 and cgsm.user_id_ = #{studentId}
                 and cgsm.user_id_ = #{studentId}
@@ -355,7 +355,7 @@
 
 
     <sql id="studentManageAttendanceQueryCondition">
     <sql id="studentManageAttendanceQueryCondition">
         <where>
         <where>
-            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0 and cssp.tenant_id_ = #{tenantId}
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1 and cssp.tenant_id_ = #{tenantId}
             <if test="studentId!=null">
             <if test="studentId!=null">
                 AND cssp.user_id_ = #{studentId}
                 AND cssp.user_id_ = #{studentId}
             </if>
             </if>
@@ -456,7 +456,7 @@
     </select>
     </select>
     <sql id="studentPaymentSql">
     <sql id="studentPaymentSql">
         <where>
         <where>
-            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0 and cssp.tenant_id_ = #{tenantId}
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1 and cssp.tenant_id_ = #{tenantId}
             AND cs.id_ IS NOT NULL AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
             AND cs.id_ IS NOT NULL AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
             <if test="classGroupType != null">
             <if test="classGroupType != null">
                 AND cs.type_ = #{classGroupType}
                 AND cs.type_ = #{classGroupType}
@@ -654,7 +654,7 @@
 
 
     <sql id="queryMusicGroupStudentsSignSql">
     <sql id="queryMusicGroupStudentsSignSql">
         <where>
         <where>
-            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0 and sa.tenant_id_ = #{tenantId}
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ != 1 and sa.tenant_id_ = #{tenantId}
             <if test="musicGroupId != null">
             <if test="musicGroupId != null">
                 AND sa.music_group_id_ = #{musicGroupId}
                 AND sa.music_group_id_ = #{musicGroupId}
             </if>
             </if>
@@ -771,7 +771,7 @@
         LEFT JOIN course_schedule_student_payment cssp1 ON su.id_ = cssp1.user_id_ AND cssp1.group_type_ = 'PRACTICE'
         LEFT JOIN course_schedule_student_payment cssp1 ON su.id_ = cssp1.user_id_ AND cssp1.group_type_ = 'PRACTICE'
         LEFT JOIN class_group_student_mapper cgsm ON su.id_ = cgsm.user_id_ AND cgsm.group_type_ = 'VIP'
         LEFT JOIN class_group_student_mapper cgsm ON su.id_ = cgsm.user_id_ AND cgsm.group_type_ = 'VIP'
         LEFT JOIN sys_user_cash_account suca ON su.id_ = suca.user_id_
         LEFT JOIN sys_user_cash_account suca ON su.id_ = suca.user_id_
-        WHERE su.user_type_ LIKE '%STUDENT%' AND cs.pre_course_flag_ = 0 and su.tenant_id_ = #{tenantId}
+        WHERE su.user_type_ LIKE '%STUDENT%' AND cs.pre_course_flag_ != 1 and su.tenant_id_ = #{tenantId}
         <if test="hasPracticeCourse != null and hasPracticeCourse == true">
         <if test="hasPracticeCourse != null and hasPracticeCourse == true">
             AND cssp1.id_ IS NOT NULL
             AND cssp1.id_ IS NOT NULL
         </if>
         </if>
@@ -869,7 +869,7 @@
         SELECT su.id_ 'key',COUNT(DISTINCT su.id_) 'value' FROM sys_user su
         SELECT su.id_ 'key',COUNT(DISTINCT su.id_) 'value' FROM sys_user su
         LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
         LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
         LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
         LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
-        WHERE cs.status_ != 'OVER' AND cs.pre_course_flag_ = 0 AND su.id_ IN
+        WHERE cs.status_ != 'OVER' AND cs.pre_course_flag_ != 1 AND su.id_ IN
         <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
         <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
             #{userId}
             #{userId}
         </foreach>
         </foreach>

+ 7 - 8
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -791,7 +791,7 @@
 
 
     <sql id="queryCloudStudyStudentDataCondition">
     <sql id="queryCloudStudyStudentDataCondition">
         <where>
         <where>
-            su.del_flag_=0 AND t.user_id_ NOT IN (SELECT user_id_ FROM student WHERE subject_id_list_ REGEXP '21|25|26|27|28|29') and su.tenant_id_ = #{tenantId}
+            su.del_flag_=0 AND stu.subject_id_list_ NOT IN ('21','25','26','27','28','29') and su.tenant_id_ = #{tenantId}
             <if test="organId!=null">
             <if test="organId!=null">
                 AND su.organ_id_=#{organId}
                 AND su.organ_id_=#{organId}
             </if>
             </if>
@@ -806,7 +806,7 @@
             stu.user_id_ studentId,
             stu.user_id_ studentId,
             su.organ_id_ organId,
             su.organ_id_ organId,
             su.username_ studentName,
             su.username_ studentName,
-            sub.name_	subjectName,
+            stu.subject_id_list_ subjectId,
             stu.cloud_study_sequence_days_ cloudStudyRunningDays,
             stu.cloud_study_sequence_days_ cloudStudyRunningDays,
             COUNT(DISTINCT smcr.behavior_id_) cloudStudyUseNum,
             COUNT(DISTINCT smcr.behavior_id_) cloudStudyUseNum,
             SUM(CASE WHEN smcr.play_time_ IS NULL THEN 0 ELSE play_time_ END) cloudStudyUseTime,
             SUM(CASE WHEN smcr.play_time_ IS NULL THEN 0 ELSE play_time_ END) cloudStudyUseTime,
@@ -821,8 +821,8 @@
                 student_registration sr
                 student_registration sr
                 LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
                 LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
                 WHERE
                 WHERE
-                mg.status_ = 'PROGRESS'
-                AND sr.music_group_status_ = 'NORMAL'
+                mg.status_ = 'PROGRESS' and sr.tenant_id_ = #{tenantId}
+        AND sr.music_group_status_ = 'NORMAL'
                 ) UNION ALL
                 ) UNION ALL
                 (
                 (
                 SELECT
                 SELECT
@@ -831,12 +831,11 @@
                 course_schedule_student_payment cssp
                 course_schedule_student_payment cssp
                 LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
                 LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
                 WHERE
                 WHERE
-                cssp.group_type_ IN ( 'VIP', 'PRACTICE' )
+                cssp.group_type_ IN ( 'VIP', 'PRACTICE' ) and cssp.tenant_id_ = #{tenantId}
                 AND cs.status_ = 'NOT_START'
                 AND cs.status_ = 'NOT_START'
                 )) t1) t
                 )) t1) t
             LEFT JOIN student stu ON t.user_id_=stu.user_id_
             LEFT JOIN student stu ON t.user_id_=stu.user_id_
             LEFT JOIN sys_user su ON stu.user_id_=su.id_
             LEFT JOIN sys_user su ON stu.user_id_=su.id_
-            LEFT JOIN `subject` sub ON stu.subject_id_list_ = sub.id_
             LEFT JOIN sys_music_compare_record smcr ON stu.user_id_ = smcr.user_id_
             LEFT JOIN sys_music_compare_record smcr ON stu.user_id_ = smcr.user_id_
             <if test="cloudTeacherTrainStartDate != null">
             <if test="cloudTeacherTrainStartDate != null">
                 AND date(smcr.create_time_) &gt;= #{cloudTeacherTrainStartDate}
                 AND date(smcr.create_time_) &gt;= #{cloudTeacherTrainStartDate}
@@ -870,7 +869,7 @@
         student_registration sr
         student_registration sr
         LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
         LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
         WHERE
         WHERE
-        mg.status_ = 'PROGRESS'
+        mg.status_ = 'PROGRESS' and sr.tenant_id_ = #{tenantId}
         AND sr.music_group_status_ = 'NORMAL'
         AND sr.music_group_status_ = 'NORMAL'
         ) UNION ALL
         ) UNION ALL
         (
         (
@@ -880,7 +879,7 @@
         course_schedule_student_payment cssp
         course_schedule_student_payment cssp
         LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
         LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
         WHERE
         WHERE
-        cssp.group_type_ IN ( 'VIP', 'PRACTICE' )
+        cssp.group_type_ IN ( 'VIP', 'PRACTICE' ) and cssp.tenant_id_ = #{tenantId}
         AND cs.status_ = 'NOT_START'
         AND cs.status_ = 'NOT_START'
         )) t
         )) t
         LEFT JOIN sys_user su ON t.user_id_ = su.id_
         LEFT JOIN sys_user su ON t.user_id_ = su.id_

+ 9 - 2
mec-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -142,10 +142,10 @@
 				AND smcr.feature_ = #{featureType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 				AND smcr.feature_ = #{featureType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			</if>
 			</if>
 			<if test="startTime != null and startTime != ''">
 			<if test="startTime != null and startTime != ''">
-				AND DATE_FORMAT(smcr.create_time_, '%Y-%m-%d') >= CONCAT(#{startTime},' 00:00:00')
+				AND DATE_FORMAT(smcr.create_time_, '%Y-%m-%d %H:%i:%S') >= CONCAT(#{startTime},' 00:00:00')
 			</if>
 			</if>
 			<if test="endTime != null and endTime != ''">
 			<if test="endTime != null and endTime != ''">
-				AND DATE_FORMAT(smcr.create_time_, '%Y-%m-%d') &lt;= CONCAT(#{endTime},' 23:59:59')
+				AND DATE_FORMAT(smcr.create_time_, '%Y-%m-%d %H:%i:%S') &lt;= CONCAT(#{endTime},' 23:59:59')
 			</if>
 			</if>
 		</where>
 		</where>
 	</sql>
 	</sql>
@@ -542,4 +542,11 @@
 		select CASE WHEN sum(play_time_) IS NULL THEN 0 ELSE sum(play_time_) END
 		select CASE WHEN sum(play_time_) IS NULL THEN 0 ELSE sum(play_time_) END
 		from sys_music_compare_record where user_id_ = #{userId} and DATE_FORMAT(create_time_,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
 		from sys_music_compare_record where user_id_ = #{userId} and DATE_FORMAT(create_time_,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
 	</select>
 	</select>
+
+	<select id="getByIds" resultMap="SysMusicCompareRecord">
+        SELECT * FROM sys_music_compare_record WHERE id_ IN
+        <foreach collection="musicPracticeRecordIds" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
 </mapper>
 </mapper>

+ 4 - 4
mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml

@@ -258,7 +258,7 @@
 
 
     <sql id="queryCondition">
     <sql id="queryCondition">
         <where>
         <where>
-            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.actual_teacher_id_ = ta.teacher_id_ AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.actual_teacher_id_ = ta.teacher_id_ AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
             <if test="teacherId != null">
             <if test="teacherId != null">
                 AND cs.actual_teacher_id_ = #{teacherId}
                 AND cs.actual_teacher_id_ = #{teacherId}
             </if>
             </if>
@@ -290,7 +290,7 @@
     </sql>
     </sql>
     <sql id="queryTeacherAttendancesCondition">
     <sql id="queryTeacherAttendancesCondition">
         <where>
         <where>
-            cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId}
+            cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
             <if test="search != null and search != ''">
             <if test="search != null and search != ''">
                 AND (su.id_ = #{search} OR su.real_name_ LIKE CONCAT('%',#{search},'%') OR cs.id_ = #{search} OR cs.name_ LIKE CONCAT('%',#{search},'%'))
                 AND (su.id_ = #{search} OR su.real_name_ LIKE CONCAT('%',#{search},'%') OR cs.id_ = #{search} OR cs.name_ LIKE CONCAT('%',#{search},'%'))
@@ -638,7 +638,7 @@
 
 
     <sql id="queryTeacherAttendanceSql">
     <sql id="queryTeacherAttendanceSql">
         <where>
         <where>
-            cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+            cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
             AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
             AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
             <if test="queryInfo.startTerm != null and queryInfo.startTerm != ''">
             <if test="queryInfo.startTerm != null and queryInfo.startTerm != ''">
@@ -699,7 +699,7 @@
         <if test="query.courseType != null and query.courseType != ''">
         <if test="query.courseType != null and query.courseType != ''">
             AND cs.type_ = #{query.courseType}
             AND cs.type_ = #{query.courseType}
         </if>
         </if>
-        AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+        AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ != 1 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
     </select>
     </select>
     <update id="cleanCourseTeacherSignInfo">
     <update id="cleanCourseTeacherSignInfo">
         UPDATE teacher_attendance
         UPDATE teacher_attendance

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/TeacherCourseStatisticsMapper.xml

@@ -97,7 +97,7 @@
                 ROUND( AVG( TIMESTAMPDIFF( MINUTE, start_class_time_, end_class_time_ )), 0 ) average_class_minutes_
                 ROUND( AVG( TIMESTAMPDIFF( MINUTE, start_class_time_, end_class_time_ )), 0 ) average_class_minutes_
             FROM course_schedule_teacher_salary csts
             FROM course_schedule_teacher_salary csts
                      LEFT JOIN course_schedule cs ON cs.id_=csts.course_schedule_id_
                      LEFT JOIN course_schedule cs ON cs.id_=csts.course_schedule_id_
-            WHERE cs.del_flag_ != 1 AND cs.pre_course_flag_ = 0
+            WHERE cs.del_flag_ != 1 AND cs.pre_course_flag_ != 1
               AND cs.class_date_ >= #{startDate} AND cs.class_date_ <= #{endDate}
               AND cs.class_date_ >= #{startDate} AND cs.class_date_ <= #{endDate}
               AND csts.group_type_ IN ( 'VIP', 'MUSIC', 'PRACTICE' )
               AND csts.group_type_ IN ( 'VIP', 'MUSIC', 'PRACTICE' )
             GROUP BY
             GROUP BY
@@ -116,7 +116,7 @@
             #{userId}
             #{userId}
         </foreach>
         </foreach>
         <![CDATA[AND cs.class_date_ >= #{startDate} AND cs.class_date_ <= #{endDate}
         <![CDATA[AND cs.class_date_ >= #{startDate} AND cs.class_date_ <= #{endDate}
-        AND csts.group_type_ IN ('VIP', 'MUSIC', 'PRACTICE') AND cs.del_flag_ != 1 AND cs.pre_course_flag_ = 0
+        AND csts.group_type_ IN ('VIP', 'MUSIC', 'PRACTICE') AND cs.del_flag_ != 1 AND cs.pre_course_flag_ != 1
         GROUP BY csts.user_id_, csts.group_type_;
         GROUP BY csts.user_id_, csts.group_type_;
   ]]></select>
   ]]></select>
 
 

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -1589,4 +1589,11 @@
         SELECT COUNT(DISTINCT t.id_)
         SELECT COUNT(DISTINCT t.id_)
         FROM teacher t LEFT JOIN sys_user su ON t.id_ = su.id_
         FROM teacher t LEFT JOIN sys_user su ON t.id_ = su.id_
     </select>
     </select>
+
+    <select id="getUserList" resultMap="SysUser">
+        select * from sys_user where id_ in
+        <foreach collection="studentIds"    item="studentId" separator="," open="(" close=")">
+            #{studentId}
+        </foreach>
+    </select>
 </mapper>
 </mapper>

+ 46 - 0
mec-biz/src/main/resources/config/mybatis/UserMusicMapper.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE  mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ym.mec.biz.dal.mapper.UserMusicMapper">
+
+
+
+    <select id="selectPage" resultType="com.ym.mec.biz.dal.wrapper.UserMusicWrapper$UserMusic">
+		SELECT
+            t.*
+		FROM user_music t
+        left join sys_music_score t1 on t1.id_ = t.music_sheet_id_
+        <where>
+            t.del_flag_ = 0
+            <if test="param.keyword != null and param.keyword != ''">
+                and t1.name_ like concat('%', #{param.keyword}, '%')
+            </if>
+            <if test="param.userId != null">
+                and t.user_id_ = #{param.userId}
+            </if>
+            <if test="param.clientType != null">
+                and t.client_type_ = #{param.clientType}
+            </if>
+            <if test="param.type != null">
+                and t.type_ = #{param.type}
+            </if>
+            <if test="param.id != null">
+                and t.id_ = #{param.id}
+            </if>
+            <if test="param.exclusionId != null">
+                and t.id_ != #{param.exclusionId}
+            </if>
+        </where>
+        <if test="param.sort != null">
+            order by
+            <if test="param.sort == 1">
+                t.like_num_ desc,
+            </if>
+            t.submit_time_ desc ,t.create_time_ desc ,t.id_ desc
+        </if>
+
+	</select>
+
+    <update id="updateStar">
+        update user_music set like_num_ =(select count(1) from  user_music_star where  user_music_id_ = #{userMusicId}) where id_ = #{userMusicId}
+    </update>
+</mapper>

+ 42 - 0
mec-biz/src/main/resources/config/mybatis/UserMusicStarMapper.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE  mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ym.mec.biz.dal.mapper.UserMusicStarMapper">
+
+
+
+    <!-- 表字段 -->
+    <sql id="baseColumns">
+         t.id_ AS id
+        , t.user_id_ AS userId
+        , t.client_type_ AS clientType
+        , t.user_music_id_ AS userMusicId
+        , t.create_time_ AS createTime
+        </sql>
+
+    <select id="selectPage" resultType="com.ym.mec.biz.dal.entity.UserMusicStar">
+		SELECT
+        	<include refid="baseColumns" />
+		FROM user_music_star t
+        <where>
+            <if test="param.userMusicId != null">
+                AND t.user_music_id_ = #{param.userMusicId}
+            </if>
+        </where>
+        order by t.create_time_ desc ,t.id_ desc
+	</select>
+
+    <select id="getStarCountMapByUserMusicIds"
+            resultType="com.ym.mec.biz.dal.wrapper.UserMusicStarWrapper$StarCount">
+        SELECT
+            t.user_music_id_ AS userMusicId,
+            count(1) AS starCount
+        FROM user_music_star t
+        WHERE t.user_music_id_ IN
+        <foreach collection="userMusicIds" item="userMusicId" separator="," open="(" close=")">
+            #{userMusicId}
+        </foreach>
+        GROUP BY t.user_music_id_
+
+
+    </select>
+</mapper>