瀏覽代碼

Merge branch 'feature/1022_vip' into dev

刘俊驰 7 月之前
父節點
當前提交
d0e93e67b9
共有 17 個文件被更改,包括 254 次插入89 次删除
  1. 4 2
      mec-application/src/main/java/com/ym/mec/web/controller/StudentManageController.java
  2. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonTrainingDetailWrapper.java
  3. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonTrainingDetail.java
  4. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentMemberUpdateLog.java
  5. 3 47
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CloudCoachPaymentProgramQueryInfo.java
  6. 31 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/CloudTeacherOrderWrapper.java
  7. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentMemberTimeService.java
  8. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentMemberUpdateLogService.java
  9. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java
  10. 6 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java
  11. 0 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  12. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java
  13. 46 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonTrainingDetailServiceImpl.java
  14. 76 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentMemberTimeServiceImpl.java
  15. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentMemberUpdateLogServiceImpl.java
  16. 20 23
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  17. 3 0
      mec-biz/src/main/resources/config/mybatis/CloudCoachPaymentProgramMapper.xml

+ 4 - 2
mec-application/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
 import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.dal.wrapper.CloudTeacherOrderWrapper;
 import com.ym.mec.biz.dal.wrapper.StudentWrapper;
 import com.ym.mec.biz.dal.wrapper.StudentWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.controller.BaseController;
@@ -521,8 +522,9 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "修改学员会员时长")
     @ApiOperation(value = "修改学员会员时长")
     @PostMapping("/updateStudentMember")
     @PostMapping("/updateStudentMember")
     @PreAuthorize("@pcs.hasPermissions('studentManage/updateStudentMember')")
     @PreAuthorize("@pcs.hasPermissions('studentManage/updateStudentMember')")
-    public HttpResponseResult updateStudentMember(Integer userId,Date endTime,String memo) throws Exception {
-        studentService.updateStudentMember(userId,endTime,memo,sysUserService.getUserId());
+    public HttpResponseResult updateStudentMember(@RequestBody CloudTeacherOrderWrapper.UpdateStudentMemberDto param) throws Exception {
+        param.setOperatorId(sysUserService.getUserId());
+        studentService.updateStudentMember(param);
         return succeed();
         return succeed();
     }
     }
 
 

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonTrainingDetailWrapper.java

@@ -28,6 +28,9 @@ public class StudentLessonTrainingDetailWrapper {
         @ApiModelProperty("曲目id")
         @ApiModelProperty("曲目id")
         private Long musicScoreId;
         private Long musicScoreId;
 
 
+        @ApiModelProperty("课件ID 布置课件视频作业时")
+        private String lessonCoursewareId;
+
         @ApiModelProperty("曲目名称")
         @ApiModelProperty("曲目名称")
         private String musicScoreName;
         private String musicScoreName;
 
 
@@ -70,6 +73,10 @@ public class StudentLessonTrainingDetailWrapper {
         @ApiModelProperty("曲目id")
         @ApiModelProperty("曲目id")
         private Long musicScoreId;
         private Long musicScoreId;
 
 
+
+        @ApiModelProperty("课件ID 布置课件视频作业时")
+        private String lessonCoursewareId;
+
         @ApiModelProperty("曲目名称")
         @ApiModelProperty("曲目名称")
         private String  musicScoreName;
         private String  musicScoreName;
 
 
@@ -113,6 +120,9 @@ public class StudentLessonTrainingDetailWrapper {
         private Boolean validFlag = false;
         private Boolean validFlag = false;
 
 
         private String memo;
         private String memo;
+
+        @ApiModelProperty("使用状态 锁定: LOCK 解锁:UNLOCK")
+        private String useStatus;
         
         
         public String jsonString() {
         public String jsonString() {
             return JSON.toJSONString(this);
             return JSON.toJSONString(this);

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonTrainingDetail.java

@@ -100,4 +100,8 @@ public class StudentLessonTrainingDetail implements Serializable {
 	@TableField(value = "update_time_")
 	@TableField(value = "update_time_")
     private Date updateTime;
     private Date updateTime;
 
 
+
+    @ApiModelProperty("课件ID 布置课件视频作业时")
+    @TableField(value = "lesson_courseware_id_")
+    private String lessonCoursewareId;
 }
 }

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentMemberUpdateLog.java

@@ -4,6 +4,7 @@ package com.ym.mec.biz.dal.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.ym.mec.biz.dal.enums.PeriodEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
@@ -31,6 +32,26 @@ public class StudentMemberUpdateLog implements Serializable {
     @ApiModelProperty(value = "操作人")
     @ApiModelProperty(value = "操作人")
     private Integer operatorId;
     private Integer operatorId;
 
 
+    @ApiModelProperty(value = "时长类型 1-天 2-月 3-年")
+    @TableField("type_")
+    private PeriodEnum type;
+
+    @ApiModelProperty(value = "会员等级")
+    @TableField("level_")
+    private Integer level;
+
+    @ApiModelProperty(value = "会员名称")
+    @TableField("name_")
+    private String name;
+
+    @ApiModelProperty(value = "购买时长")
+    @TableField("time_")
+    private Integer time;
+
+    @ApiModelProperty(value = "购买方式,1-自行购买 2-后台添加 3-后台扣减")
+    @TableField("buy_type_")
+    private Integer buyType;
+
     @TableField("old_start_time_")
     @TableField("old_start_time_")
     @ApiModelProperty(value = "原会员开始时间")
     @ApiModelProperty(value = "原会员开始时间")
     private Date oldStartTime;
     private Date oldStartTime;

+ 3 - 47
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CloudCoachPaymentProgramQueryInfo.java

@@ -1,7 +1,9 @@
 package com.ym.mec.biz.dal.page;
 package com.ym.mec.biz.dal.page;
 
 
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.page.QueryInfo;
+import lombok.Data;
 
 
+@Data
 public class CloudCoachPaymentProgramQueryInfo extends QueryInfo {
 public class CloudCoachPaymentProgramQueryInfo extends QueryInfo {
     private String organId;
     private String organId;
 
 
@@ -15,51 +17,5 @@ public class CloudCoachPaymentProgramQueryInfo extends QueryInfo {
 
 
     private Integer audit;
     private Integer audit;
 
 
-    public Integer getAudit() {
-        return audit;
-    }
-
-    public void setAudit(Integer audit) {
-        this.audit = audit;
-    }
-
-    public String getOrganId() {
-        return organId;
-    }
-
-    public void setOrganId(String organId) {
-        this.organId = organId;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public String getPeriod() {
-        return period;
-    }
-
-    public void setPeriod(String period) {
-        this.period = period;
-    }
-
-    public String getStartTime() {
-        return startTime;
-    }
-
-    public void setStartTime(String startTime) {
-        this.startTime = startTime;
-    }
-
-    public String getEndTime() {
-        return endTime;
-    }
-
-    public void setEndTime(String endTime) {
-        this.endTime = endTime;
-    }
+    private Integer memberRankId;
 }
 }

+ 31 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/CloudTeacherOrderWrapper.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.dal.wrapper;
 package com.ym.mec.biz.dal.wrapper;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ym.mec.biz.dal.enums.PeriodEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
@@ -29,6 +31,35 @@ public class CloudTeacherOrderWrapper {
         private Integer studentId;
         private Integer studentId;
     }
     }
 
 
+    @Data
+    @ApiModel("学员会员调整")
+    public static class UpdateStudentMemberDto {
+
+        @ApiModelProperty("会员编号")
+        private Integer memberRankId;
+
+        @ApiModelProperty(value = "时长类型 1-天 2-月 3-年")
+        private PeriodEnum periodType;
+
+        @ApiModelProperty("时长")
+        private Integer number;
+
+        @ApiModelProperty("学员编号")
+        private Integer studentId;
+
+        @ApiModelProperty("操作人")
+        private Integer operatorId;
+
+        @ApiModelProperty("备注")
+        private String memo;
+
+        @ApiModelProperty("2添加、3扣减")
+        private Integer type;
+
+        @ApiModelProperty("是否推送")
+        private Boolean pushFlag;
+    }
+
 
 
     @Data
     @Data
     @ApiModel("学员会员订单回调详情")
     @ApiModel("学员会员订单回调详情")

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentMemberTimeService.java

@@ -1,10 +1,15 @@
 package com.ym.mec.biz.service;
 package com.ym.mec.biz.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.biz.dal.entity.StudentMemberTime;
 import com.ym.mec.biz.dal.entity.StudentMemberTime;
+import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
 
 
 public interface StudentMemberTimeService extends IService<StudentMemberTime> {
 public interface StudentMemberTimeService extends IService<StudentMemberTime> {
 
 
+    void saveToCloudTeacherOrder(CloudTeacherOrder cloudTeacherOrder);
+
+    void saveToStudentMemberUpdateLog(StudentMemberUpdateLog studentMemberUpdateLog);
 }
 }
 
 
 
 

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

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.biz.dal.dao.StudentMemberUpdateLogDao;
 import com.ym.mec.biz.dal.dao.StudentMemberUpdateLogDao;
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
 import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
 
 
 /**
 /**
@@ -13,5 +14,7 @@ import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
 public interface StudentMemberUpdateLogService extends IService<StudentMemberUpdateLog> {
 public interface StudentMemberUpdateLogService extends IService<StudentMemberUpdateLog> {
 
 
     StudentMemberUpdateLogDao getDao();
     StudentMemberUpdateLogDao getDao();
+
+    void saveToCloudTeacherOrder(CloudTeacherOrder cloudTeacherOrder);
 }
 }
 
 

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

@@ -14,6 +14,7 @@ import com.ym.mec.biz.dal.enums.GradeTypeEnum;
 import com.ym.mec.biz.dal.enums.PeriodEnum;
 import com.ym.mec.biz.dal.enums.PeriodEnum;
 import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
 import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.dal.wrapper.CloudTeacherOrderWrapper;
 import com.ym.mec.biz.dal.wrapper.StudentWrapper;
 import com.ym.mec.biz.dal.wrapper.StudentWrapper;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.page.QueryInfo;
@@ -251,7 +252,7 @@ public interface StudentService extends BaseService<Integer, Student> {
     * @author zx
     * @author zx
     * @date 2023/5/17 11:25
     * @date 2023/5/17 11:25
     */
     */
-    void updateStudentMember(Integer userId, Date endTime,String memo,Integer operatorId);
+    void updateStudentMember(CloudTeacherOrderWrapper.UpdateStudentMemberDto param);
 
 
     PageInfo<Student> queryBaseInfoByPage(QueryInfo queryInfo);
     PageInfo<Student> queryBaseInfoByPage(QueryInfo queryInfo);
 
 

+ 6 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -76,6 +76,8 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     private StudentDao studentDao;
     private StudentDao studentDao;
     @Resource
     @Resource
     private StudentMemberTimeService studentMemberTimeService;
     private StudentMemberTimeService studentMemberTimeService;
+    @Resource
+    private StudentMemberUpdateLogService studentMemberUpdateLogService;
     @Override
     @Override
     public BaseDAO<Long, CloudTeacherOrder> getDAO() {
     public BaseDAO<Long, CloudTeacherOrder> getDAO() {
         return cloudTeacherOrderDao;
         return cloudTeacherOrderDao;
@@ -401,11 +403,6 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     public void activationMember(Date now,CloudTeacherOrder cloudTeacherOrder){
     public void activationMember(Date now,CloudTeacherOrder cloudTeacherOrder){
-//        Student student = studentService.get(cloudTeacherOrder.getStudentId());
-//        if(student.getMembershipEndTime() != null && student.getMembershipEndTime().compareTo(now) > 0){
-//            now = student.getMembershipEndTime();
-//        }
-//        StudentMemberTimeService
         //获取已激活的云教练最大时间
         //获取已激活的云教练最大时间
         Date maxTime = cloudTeacherOrderDao.getActivationMaxTime(cloudTeacherOrder.getStudentId(),cloudTeacherOrder.getLevel());
         Date maxTime = cloudTeacherOrderDao.getActivationMaxTime(cloudTeacherOrder.getStudentId(),cloudTeacherOrder.getLevel());
         if (maxTime != null && maxTime.compareTo(now) > 0) {
         if (maxTime != null && maxTime.compareTo(now) > 0) {
@@ -421,7 +418,11 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         }else {
         }else {
             cloudTeacherOrderDao.update(cloudTeacherOrder);
             cloudTeacherOrderDao.update(cloudTeacherOrder);
         }
         }
+        //保存学员会员时间
+        studentMemberTimeService.saveToCloudTeacherOrder(cloudTeacherOrder);
         studentDao.updateCloudTeacherEndTime(cloudTeacherOrder.getStudentId());
         studentDao.updateCloudTeacherEndTime(cloudTeacherOrder.getStudentId());
+        //保存学员会员调整日志
+        studentMemberUpdateLogService.saveToCloudTeacherOrder(cloudTeacherOrder);
     }
     }
 
 
     public Date calcCloudTeacherOrderTime(CloudTeacherOrder cloudTeacherOrder, Date startTime) {
     public Date calcCloudTeacherOrderTime(CloudTeacherOrder cloudTeacherOrder, Date startTime) {

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

@@ -416,8 +416,6 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
         if (CollectionUtils.isNotEmpty(calenderMemberList)) {
         if (CollectionUtils.isNotEmpty(calenderMemberList)) {
             for (MusicGroupPaymentCalenderMember calenderMember : calenderMemberList) {
             for (MusicGroupPaymentCalenderMember calenderMember : calenderMemberList) {
                 calenderMember = musicGroupPaymentCalenderMemberService.initBean(calenderMember);
                 calenderMember = musicGroupPaymentCalenderMemberService.initBean(calenderMember);
-                calenderMember.setActualAmount(memberActualAmount);
-                calenderMember.setOriginalAmount(memberOriginalAmount);
                 calenderMember.setCalenderId(calenderId);
                 calenderMember.setCalenderId(calenderId);
             }
             }
             musicGroupPaymentCalenderMemberService.batchInsert(calenderMemberList);
             musicGroupPaymentCalenderMemberService.batchInsert(calenderMemberList);

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

@@ -908,7 +908,9 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
 
 
     @Override
     @Override
     public List<StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail> findStudentHomeworkCourseware(CourseHomeworkWrapper.StudentCourseHomeworkQuery query) {
     public List<StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail> findStudentHomeworkCourseware(CourseHomeworkWrapper.StudentCourseHomeworkQuery query) {
-        return studentLessonTrainingDetailService.getBaseLessonTrainingDetail(query.getCourseScheduleId().longValue(), query.getType(), query.getUserId(),"VIDEO");
+        List<StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail> detailList = studentLessonTrainingDetailService.getBaseLessonTrainingDetail(query.getCourseScheduleId().longValue(), query.getType(), query.getUserId(), "VIDEO");
+        studentLessonTrainingDetailService.updateMusicScoreName(detailList);
+        return detailList;
     }
     }
 
 
     /**
     /**

+ 46 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonTrainingDetailServiceImpl.java

@@ -19,10 +19,7 @@ import com.ym.mec.biz.dal.dto.StudentSubjectDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ELessonTrainingType;
 import com.ym.mec.biz.dal.enums.ELessonTrainingType;
 import com.ym.mec.biz.dal.enums.StandardEnum;
 import com.ym.mec.biz.dal.enums.StandardEnum;
-import com.ym.mec.biz.service.ExtracurricularExercisesService;
-import com.ym.mec.biz.service.MemberRankCategoryMapperService;
-import com.ym.mec.biz.service.StudentLessonTrainingDetailService;
-import com.ym.mec.biz.service.SubjectService;
+import com.ym.mec.biz.service.*;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -62,6 +59,8 @@ public class StudentLessonTrainingDetailServiceImpl extends ServiceImpl<StudentL
     @Autowired
     @Autowired
     private MemberRankCategoryMapperService memberRankCategoryMapperService;
     private MemberRankCategoryMapperService memberRankCategoryMapperService;
 
 
+    @Autowired
+    private MemberRankCourseTypeMapperService memberRankCourseTypeMapperService;
     /**
     /**
      * 查询详情
      * 查询详情
      * @param id 详情ID
      * @param id 详情ID
@@ -253,7 +252,7 @@ public class StudentLessonTrainingDetailServiceImpl extends ServiceImpl<StudentL
 
 
                             // 免费曲目也可以直接访问
                             // 免费曲目也可以直接访问
                             if (StringUtils.isBlank(sysMusicScore.getRankIds())) {
                             if (StringUtils.isBlank(sysMusicScore.getRankIds())) {
-                                studentLessonTrainingDetail.setValidFlag(true);
+                                studentLessonTrainingDetail.setUseStatus("FREE");
                             }
                             }
 
 
                             // 用户VIP可查看曲目分类
                             // 用户VIP可查看曲目分类
@@ -261,14 +260,14 @@ public class StudentLessonTrainingDetailServiceImpl extends ServiceImpl<StudentL
                                 && userVipMap.containsKey(studentLessonTrainingDetail.getUserId().intValue())) {
                                 && userVipMap.containsKey(studentLessonTrainingDetail.getUserId().intValue())) {
 
 
                                 // 设置默认不可以查看
                                 // 设置默认不可以查看
-                                boolean validFlag = false;
                                 List<Integer> categoryIds = userVipMap.get(studentLessonTrainingDetail.getUserId().intValue());
                                 List<Integer> categoryIds = userVipMap.get(studentLessonTrainingDetail.getUserId().intValue());
                                 if (categoryIds.contains(sysMusicScore.getCbsMusicCategoriesId())
                                 if (categoryIds.contains(sysMusicScore.getCbsMusicCategoriesId())
                                     || StringUtils.isBlank(sysMusicScore.getRankIds())) {
                                     || StringUtils.isBlank(sysMusicScore.getRankIds())) {
                                     // 免费曲目,已购买曲目可直接查看
                                     // 免费曲目,已购买曲目可直接查看
-                                    validFlag = true;
+                                    studentLessonTrainingDetail.setUseStatus("UNLOCK");
+                                } else {
+                                    studentLessonTrainingDetail.setUseStatus("LOCK");
                                 }
                                 }
-                                studentLessonTrainingDetail.setValidFlag(validFlag);
                             }
                             }
                             studentLessonTrainingDetail.setMusicScoreName(sysMusicScore.getName());
                             studentLessonTrainingDetail.setMusicScoreName(sysMusicScore.getName());
                         }
                         }
@@ -310,6 +309,45 @@ public class StudentLessonTrainingDetailServiceImpl extends ServiceImpl<StudentL
                 }
                 }
             }
             }
         }
         }
+        // 判断课件
+        Map<Integer, List<Integer>> userVipMap = Maps.newConcurrentMap();
+        studentLessonTrainingDetails.parallelStream().forEach(o -> {
+            if (o.getUserId() == null) {
+                return;
+            }
+            // 查询有效的会员
+            List<Integer> activationVipIds = cloudTeacherOrderDao.getActivationVipIds(o.getUserId().intValue());
+
+            // 获取会员的曲目分类
+
+            List<MemberRankCourseTypeMapper> courseTypeMapperList = memberRankCourseTypeMapperService.getByMemberRankId(activationVipIds);
+            if (CollectionUtils.isEmpty(courseTypeMapperList)) {
+                courseTypeMapperList = Lists.newArrayList();
+            }
+            List<Integer> categoryIds = courseTypeMapperList.stream().map(MemberRankCourseTypeMapper::getCourseType)
+                .distinct().map(Integer::parseInt).collect(Collectors.toList());
+            // 设置用户VIP可查看曲目分类
+            userVipMap.put(o.getUserId().intValue(), categoryIds);
+        });
+        for (StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail studentLessonTrainingDetail : studentLessonTrainingDetails) {
+            if (studentLessonTrainingDetail.getUserId() == null) {
+                return;
+            }
+            if ("VIDEO".equals(studentLessonTrainingDetail.getHomeworkType()) && StringUtils.isNotBlank(studentLessonTrainingDetail.getLessonCoursewareId())) {
+                List<Integer> courseTypeIds = userVipMap.get(studentLessonTrainingDetail.getUserId().intValue());
+                if (CollectionUtils.isNotEmpty(courseTypeIds)) {
+                    if (courseTypeIds.contains(Integer.parseInt(studentLessonTrainingDetail.getLessonCoursewareId()))) {
+                        studentLessonTrainingDetail.setUseStatus("UNLOCK");
+                    } else {
+                        studentLessonTrainingDetail.setUseStatus("LOCK");
+                    }
+                }
+            } else if ("VIDEO".equals(studentLessonTrainingDetail.getHomeworkType())){
+                studentLessonTrainingDetail.setUseStatus("UNLOCK");
+            }
+        }
+
+
     }
     }
 
 
 
 

+ 76 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentMemberTimeServiceImpl.java

@@ -2,11 +2,18 @@ package com.ym.mec.biz.service.impl;
 
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.biz.dal.dao.StudentMemberTimeDao;
 import com.ym.mec.biz.dal.dao.StudentMemberTimeDao;
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.biz.dal.entity.StudentMemberTime;
 import com.ym.mec.biz.dal.entity.StudentMemberTime;
+import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
+import com.ym.mec.biz.dal.enums.PeriodEnum;
 import com.ym.mec.biz.service.StudentMemberTimeService;
 import com.ym.mec.biz.service.StudentMemberTimeService;
+import com.ym.mec.util.date.DateUtil;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
 
 
 @Service("studentMemberTimeService")
 @Service("studentMemberTimeService")
 public class StudentMemberTimeServiceImpl extends ServiceImpl<StudentMemberTimeDao, StudentMemberTime> implements StudentMemberTimeService {
 public class StudentMemberTimeServiceImpl extends ServiceImpl<StudentMemberTimeDao, StudentMemberTime> implements StudentMemberTimeService {
@@ -14,6 +21,75 @@ public class StudentMemberTimeServiceImpl extends ServiceImpl<StudentMemberTimeD
     private final static Logger log = LoggerFactory.getLogger(StudentMemberTimeServiceImpl.class);
     private final static Logger log = LoggerFactory.getLogger(StudentMemberTimeServiceImpl.class);
 
 
 
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveToCloudTeacherOrder(CloudTeacherOrder cloudTeacherOrder) {
+        StudentMemberTime one = this.lambdaQuery().eq(StudentMemberTime::getMemberRankId, cloudTeacherOrder.getLevel()).last("limit 1").one();
+        if (one == null) {
+            one = new StudentMemberTime();
+            one.setMemberRankId(cloudTeacherOrder.getLevel());
+            one.setStudentId(cloudTeacherOrder.getStudentId());
+            one.setEndTime(cloudTeacherOrder.getEndTime());
+            this.save(one);
+        }else {
+            one.setEndTime(cloudTeacherOrder.getEndTime());
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveToStudentMemberUpdateLog(StudentMemberUpdateLog studentMemberUpdateLog) {
+        StudentMemberTime one = this.lambdaQuery().eq(StudentMemberTime::getMemberRankId, studentMemberUpdateLog.getLevel()).last("limit 1").one();
+        //扣减
+        Date now = new Date();
+        if(studentMemberUpdateLog.getBuyType() == 3){
+            if (one == null) {
+                throw new RuntimeException("会员信息不存在");
+            }
+            studentMemberUpdateLog.setOldEndTime(one.getEndTime());
+            if (one.getEndTime().after(now)) {
+                studentMemberUpdateLog.setOldEndTime(one.getEndTime());
+                one.setEndTime(addDays(one.getEndTime(), -studentMemberUpdateLog.getTime(), studentMemberUpdateLog.getType()));
+                this.updateById(one);
+            }else {
+                throw new RuntimeException("会员已过期");
+            }
+        }else {
+            if (one == null) {
+                one = new StudentMemberTime();
+                one.setMemberRankId(studentMemberUpdateLog.getLevel());
+                one.setStudentId(studentMemberUpdateLog.getStudentId());
+                one.setEndTime(addDays(now, studentMemberUpdateLog.getTime(), studentMemberUpdateLog.getType()));
+                this.save(one);
+            }else {
+                if (one.getEndTime().after(now)) {
+                    studentMemberUpdateLog.setOldEndTime(one.getEndTime());
+                    one.setEndTime(addDays(one.getEndTime(), studentMemberUpdateLog.getTime(), studentMemberUpdateLog.getType()));
+                }else {
+                    studentMemberUpdateLog.setOldEndTime(now);
+                    one.setEndTime(addDays(now, studentMemberUpdateLog.getTime(), studentMemberUpdateLog.getType()));
+                }
+                this.updateById(one);
+            }
+        }
+        studentMemberUpdateLog.setNewEndTime(one.getEndTime());
+    }
 
 
+    private Date addDays(Date endTime, int time, PeriodEnum type) {
+        switch (type) {
+            case DAY:
+                return DateUtil.addDays(endTime, time);
+            case MONTH:
+                return DateUtil.addMonths(endTime, time);
+            case QUARTERLY:
+                return DateUtil.addMonths(endTime, time * 3);
+            case YEAR_HALF:
+                return DateUtil.addMonths(endTime, time * 6);
+            case YEAR:
+                return DateUtil.addYears(endTime, time);
+            default:
+                return endTime;
+        }
+    }
 }
 }
 
 

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentMemberUpdateLogServiceImpl.java

@@ -2,11 +2,13 @@ package com.ym.mec.biz.service.impl;
 
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.biz.dal.dao.StudentMemberUpdateLogDao;
 import com.ym.mec.biz.dal.dao.StudentMemberUpdateLogDao;
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
 import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
 import com.ym.mec.biz.service.StudentMemberUpdateLogService;
 import com.ym.mec.biz.service.StudentMemberUpdateLogService;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 
 /**
 /**
  * 学员云教练时长修改记录(StudentMemberUpdateLog)表服务实现类
  * 学员云教练时长修改记录(StudentMemberUpdateLog)表服务实现类
@@ -24,5 +26,20 @@ public class StudentMemberUpdateLogServiceImpl extends ServiceImpl<StudentMember
             return this.baseMapper;
             return this.baseMapper;
     }
     }
 
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveToCloudTeacherOrder(CloudTeacherOrder cloudTeacherOrder) {
+        StudentMemberUpdateLog studentMemberUpdateLog = new StudentMemberUpdateLog();
+        studentMemberUpdateLog.setStudentId(cloudTeacherOrder.getStudentId());
+        studentMemberUpdateLog.setMemo(cloudTeacherOrder.getRemark());
+        studentMemberUpdateLog.setType(cloudTeacherOrder.getType());
+        studentMemberUpdateLog.setLevel(cloudTeacherOrder.getLevel());
+        studentMemberUpdateLog.setTime(cloudTeacherOrder.getTime());
+        studentMemberUpdateLog.setBuyType(1);
+        studentMemberUpdateLog.setOldEndTime(cloudTeacherOrder.getStartTime());
+        studentMemberUpdateLog.setNewEndTime(cloudTeacherOrder.getEndTime());
+        this.save(studentMemberUpdateLog);
+    }
+
 }
 }
 
 

+ 20 - 23
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -14,6 +14,7 @@ import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.mapper.SchoolActivityMapper;
 import com.ym.mec.biz.dal.mapper.SchoolActivityMapper;
 import com.ym.mec.biz.dal.mapper.StudentPlusMapper;
 import com.ym.mec.biz.dal.mapper.StudentPlusMapper;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.dal.wrapper.CloudTeacherOrderWrapper;
 import com.ym.mec.biz.dal.wrapper.SchoolActivityWrapper;
 import com.ym.mec.biz.dal.wrapper.SchoolActivityWrapper;
 import com.ym.mec.biz.dal.wrapper.StudentWrapper;
 import com.ym.mec.biz.dal.wrapper.StudentWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.biz.service.*;
@@ -64,7 +65,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     @Autowired
     @Autowired
     private PracticeGroupDao practiceGroupDao;
     private PracticeGroupDao practiceGroupDao;
     @Autowired
     @Autowired
-    private MemberRankSettingDao memberRankSettingDao;
+    private MemberRankSettingService memberRankSettingService;
     @Autowired
     @Autowired
     private SysConfigDao sysConfigDao;
     private SysConfigDao sysConfigDao;
     @Autowired
     @Autowired
@@ -124,6 +125,8 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     private StudentService studentService;
     private StudentService studentService;
     @Autowired
     @Autowired
     private SysUserService sysUserService;
     private SysUserService sysUserService;
+    @Autowired
+    private StudentMemberTimeService studentMemberTimeService;
 
 
     @Override
     @Override
     public BaseDAO<Integer, Student> getDAO() {
     public BaseDAO<Integer, Student> getDAO() {
@@ -492,14 +495,14 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     public void updateMemberExperience(String studentIds, Integer rankId, Date endTime) {
     public void updateMemberExperience(String studentIds, Integer rankId, Date endTime) {
+        if(StringUtils.isEmpty(studentIds)){
+            throw new BizException("请选择学员");
+        }
         //会员是否存在
         //会员是否存在
-        MemberRankSetting memberRankSetting = memberRankSettingDao.get(rankId);
+        MemberRankSetting memberRankSetting = memberRankSettingService.get(rankId);
         if(memberRankSetting == null){
         if(memberRankSetting == null){
             throw new BizException("会员信息不存在");
             throw new BizException("会员信息不存在");
         }
         }
-        if(StringUtils.isEmpty(studentIds)){
-            throw new BizException("请选择学员");
-        }
         //学员是否有会员
         //学员是否有会员
         List<Integer> studentIdList = Arrays.stream(studentIds.split(",")).map(Integer::parseInt).collect(Collectors.toList());
         List<Integer> studentIdList = Arrays.stream(studentIds.split(",")).map(Integer::parseInt).collect(Collectors.toList());
         List<Student> studentList = studentDao.findByStudentIds(studentIdList);
         List<Student> studentList = studentDao.findByStudentIds(studentIdList);
@@ -1640,30 +1643,24 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
 
 
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
-    public void updateStudentMember(Integer userId, Date endTime,String memo,Integer operatorId) {
+    public void updateStudentMember(CloudTeacherOrderWrapper.UpdateStudentMemberDto param) {
+        Integer userId = param.getStudentId();
         Student student = studentDao.get(userId);
         Student student = studentDao.get(userId);
         if(Objects.isNull(student)){
         if(Objects.isNull(student)){
             throw new BizException("学员信息不存在");
             throw new BizException("学员信息不存在");
         }
         }
         StudentMemberUpdateLog studentMemberUpdateLog = new StudentMemberUpdateLog();
         StudentMemberUpdateLog studentMemberUpdateLog = new StudentMemberUpdateLog();
         studentMemberUpdateLog.setStudentId(userId);
         studentMemberUpdateLog.setStudentId(userId);
-        studentMemberUpdateLog.setOldStartTime(student.getMembershipStartTime());
-        studentMemberUpdateLog.setOldEndTime(student.getMembershipEndTime());
-        studentMemberUpdateLog.setMemo(memo);
-        studentMemberUpdateLog.setOperatorId(operatorId);
-        Date now = new Date();
-        if (endTime == null || endTime.compareTo(now) < 0){
-            studentDao.cleanMember(userId);
-        }else {
-            if(student.getMembershipStartTime() == null){
-                student.setMembershipStartTime(now);
-            }
-            student.setMemberRankSettingId(1);
-            student.setMembershipEndTime(endTime);
-            studentDao.updateStudentMember(student);
-            studentMemberUpdateLog.setNewStartTime(student.getMembershipStartTime());
-            studentMemberUpdateLog.setNewEndTime(student.getMembershipEndTime());
-        }
+        studentMemberUpdateLog.setMemo(param.getMemo());
+        studentMemberUpdateLog.setOperatorId(param.getOperatorId());
+        studentMemberUpdateLog.setType(param.getPeriodType());
+        studentMemberUpdateLog.setLevel(param.getMemberRankId());
+        studentMemberUpdateLog.setTime(param.getNumber());
+        studentMemberUpdateLog.setBuyType(param.getType());
+        //保存学员会员时间
+        studentMemberTimeService.saveToStudentMemberUpdateLog(studentMemberUpdateLog);
+        studentDao.updateCloudTeacherEndTime(userId);
+        studentMemberUpdateLog.setName(memberRankSettingService.queryMemberName(param.getMemberRankId()));
         //添加修改日志
         //添加修改日志
         studentMemberUpdateLogDao.insert(studentMemberUpdateLog);
         studentMemberUpdateLogDao.insert(studentMemberUpdateLog);
     }
     }

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/CloudCoachPaymentProgramMapper.xml

@@ -124,6 +124,9 @@
 			<if test="tenantId != null">
 			<if test="tenantId != null">
 				AND ccpp.tenant_id_ = #{tenantId}
 				AND ccpp.tenant_id_ = #{tenantId}
 			</if>
 			</if>
+			<if test="memberRankId != null">
+				AND ccpp.member_rank_setting_id_ = #{memberRankId}
+			</if>
             <if test="audit != null">
             <if test="audit != null">
                 AND ccpp.audit_ = #{audit}
                 AND ccpp.audit_ = #{audit}
             </if>
             </if>