liujunchi 2 gadi atpakaļ
vecāks
revīzija
944ebb0921

+ 11 - 4
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseCoursewareController.java

@@ -45,9 +45,6 @@ public class CourseCoursewareController extends BaseController {
     @PostMapping("/submit")
     @ApiOperation(value = "新增或修改", notes = "传入courseCourseware")
 	public HttpResponseResult submit(@Valid @RequestBody CourseCourseware courseCourseware) {
-		if (courseCourseware.getUserId() == null) {
-			return failed("老师id不能为空");
-		}
 		if (courseCourseware.getId() != null) {
 			courseCourseware.setUpdateTime(new Date());
 		} else {
@@ -55,7 +52,7 @@ public class CourseCoursewareController extends BaseController {
 			courseCourseware.setCreateTime(new Date());
 		}
 		courseCourseware.setClientType(ClientEnum.TEACHER);
-        return status(courseCoursewareService.saveOrUpdate(courseCourseware));
+        return status(courseCoursewareService.submit(courseCourseware));
     }
 
  	/**
@@ -66,4 +63,14 @@ public class CourseCoursewareController extends BaseController {
 	public HttpResponseResult remove(@PathVariable Long id ) {
 		return status(courseCoursewareService.removeById(id));
 	}
+
+
+	/**
+	 * 删除
+	 */
+	@PostMapping("/remove")
+	@ApiOperation(value = "批量删除", notes = "传入id")
+	public HttpResponseResult remove(@RequestParam String ids ) {
+		return status(courseCoursewareService.removeByIds(StringUtil.toLongList(ids)));
+	}
 }

+ 15 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/OpenUserAccountController.java

@@ -1,10 +1,13 @@
 package com.yonge.cooleshow.admin.controller.open;
 
+import com.yonge.cooleshow.biz.dal.dto.MusicImgDto;
+import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
 import com.yonge.cooleshow.biz.dal.service.UserAccountService;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.entity.MallOrderItemDto;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.Valid;
 import java.util.List;
 
 @RestController
@@ -26,6 +30,8 @@ public class OpenUserAccountController extends BaseController {
     @Autowired
     private UserAccountService userAccountService;
 
+    @Autowired
+    private MusicSheetService musicSheetService;
 
     /**
      * 设置商城收入分润
@@ -45,4 +51,13 @@ public class OpenUserAccountController extends BaseController {
         userAccountService.mallTeacherRecordState(shareDto);
         return succeed();
     }
+
+
+
+    @ApiOperation(value = "新增曲谱渲染图")
+    @PostMapping(value="/music/sheet/img")
+    public HttpResponseResult<Boolean> img(@RequestBody @Valid MusicImgDto musicImgDto) {
+        return succeed(musicSheetService.updateMusicImg(musicImgDto.getMusicImg(),musicImgDto.getMusicSheetId()));
+    }
+
 }

+ 5 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseCoursewareDao.java

@@ -26,5 +26,9 @@ public interface CourseCoursewareDao extends BaseMapper<CourseCourseware>{
      * @return: com.yonge.cooleshow.biz.dal.vo.CourseCoursewareVo
 	 */
 	List<CourseCoursewareVo> selectPage(@Param("page") IPage page, @Param("param") CourseCoursewareSearch courseCourseware);
-	
+
+	/**
+	 * 查询被购买够的课件信息
+	 */
+	List<Long> selectPayMusic(@Param("coursewareIdList") List<Long> coursewareIdList);
 }

+ 75 - 21
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/CourseCoursewareSearch.java

@@ -1,11 +1,14 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
-import com.yonge.cooleshow.biz.dal.enums.CoursewareEnum;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.page.QueryInfo;
+import com.yonge.toolset.base.util.StringUtil;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
 
 /**
  * @Author: liweifan
@@ -18,16 +21,82 @@ public class CourseCoursewareSearch extends QueryInfo{
 	@ApiModelProperty("老师id")
 	private Long userId;
 
-	@ApiModelProperty("文件名")
-	private String coursewareName;
 
-	@ApiModelProperty("课件类型 AUDIO:音频 IMG:图片 ")
-	private CoursewareEnum coursewareType;
+	@ApiModelProperty("曲目编号/名称")
+	private String idAndName;
+
+	@ApiModelProperty("标签id(多个逗号隔开)")
+	private String musicTagIds;
+
+	@ApiModelProperty(hidden = true)
+	private List<Long> musicTagIdList;
+
+	@ApiModelProperty("声部id(多个逗号隔开)")
+	private String subjectIds;
+
+	@ApiModelProperty(hidden = true)
+	private List<Long> subjectIdList;
 
+	@ApiModelProperty("是否有效, 0:失效 1:有效")
+	private YesOrNoEnum status;
 
 	@ApiModelProperty(value = "用户类型 STUDENT,TEACHER ",hidden = true)
 	private ClientEnum clientType;
 
+	public String getIdAndName() {
+		return idAndName;
+	}
+
+	public void setIdAndName(String idAndName) {
+		this.idAndName = idAndName;
+	}
+
+	public String getMusicTagIds() {
+		return musicTagIds;
+	}
+
+	public void setMusicTagIds(String musicTagIds) {
+		this.musicTagIds = musicTagIds;
+	}
+
+	public List<Long> getMusicTagIdList() {
+		return musicTagIdList;
+	}
+
+	public void setMusicTagIdList(List<Long> musicTagIdList) {
+		this.musicTagIdList = musicTagIdList;
+		if (StringUtils.isNotBlank(musicTagIds)) {
+			this.musicTagIdList = StringUtil.toLongList(musicTagIds);
+		}
+	}
+
+	public String getSubjectIds() {
+		return subjectIds;
+	}
+
+	public void setSubjectIds(String subjectIds) {
+		this.subjectIds = subjectIds;
+		if (StringUtils.isNotBlank(subjectIds)) {
+			this.subjectIdList = StringUtil.toLongList(subjectIds);
+		}
+	}
+
+	public List<Long> getSubjectIdList() {
+		return subjectIdList;
+	}
+
+	public void setSubjectIdList(List<Long> subjectIdList) {
+		this.subjectIdList = subjectIdList;
+	}
+
+	public YesOrNoEnum getStatus() {
+		return status;
+	}
+
+	public void setStatus(YesOrNoEnum status) {
+		this.status = status;
+	}
+
 	public ClientEnum getClientType() {
 		return clientType;
 	}
@@ -44,19 +113,4 @@ public class CourseCoursewareSearch extends QueryInfo{
 		this.userId = userId;
 	}
 
-	public String getCoursewareName() {
-		return coursewareName;
-	}
-
-	public void setCoursewareName(String coursewareName) {
-		this.coursewareName = coursewareName;
-	}
-
-	public CoursewareEnum getCoursewareType() {
-		return coursewareType;
-	}
-
-	public void setCoursewareType(CoursewareEnum coursewareType) {
-		this.coursewareType = coursewareType;
-	}
 }

+ 37 - 59
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseCourseware.java

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
-import com.yonge.cooleshow.biz.dal.enums.CoursewareEnum;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -14,7 +14,6 @@ import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 /**
@@ -23,53 +22,41 @@ import javax.validation.constraints.NotNull;
 @TableName("course_courseware")
 @ApiModel(value = "CourseCourseware对象", description = "课件表")
 public class CourseCourseware implements Serializable {
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
     @ApiModelProperty("主键 ")
     @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
+
     @ApiModelProperty("用户id ")
-	@TableField(value = "user_id_")
+    @TableField(value = "user_id_")
+    @NotNull(message = "用户id不能为空")
     private Long userId;
-    @ApiModelProperty(value = "用户类型 STUDENT,TEACHER ",hidden = true)
-	@TableField(value = "client_type_")
+
+    @ApiModelProperty("用户类型 STUDENT,TEACHER ")
+    @TableField(value = "client_type_")
     private ClientEnum clientType;
-    @ApiModelProperty(value = "课件名称 ",required = true)
-	@TableField(value = "courseware_name_")
-    @NotBlank(message = "课件名称不能为空")
-    private String coursewareName;
-    @ApiModelProperty(value = "课件类型 AUDIO:音频 IMG:图片 ",required = true)
-	@TableField(value = "courseware_type_")
-    @NotNull(message = "课件类型不能为空")
-    private CoursewareEnum coursewareType;
-    @ApiModelProperty(value = "文件地址 ",required = true)
-	@TableField(value = "file_url_")
-    @NotBlank(message = "文件地址不能为空")
-    private String fileUrl;
+
+    @ApiModelProperty("曲目id ")
+    @TableField(value = "music_sheet_id_")
+    @NotNull(message = "曲目id不能为空")
+    private Long musicSheetId;
+
     @ApiModelProperty("创建时间 ")
-	@TableField(value = "create_time_")
+    @TableField(value = "create_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date createTime;
+
     @ApiModelProperty("更新时间 ")
-	@TableField(value = "update_time_")
+    @TableField(value = "update_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date updateTime;
 
-
-    @TableField("del_flag_")
-    @ApiModelProperty(value = "假删除标识 0:未删除 1:已删除")
+    @ApiModelProperty("假删除标识 0:未删除 1:已删除 ")
+    @TableField(value = "del_flag_")
     private Boolean delFlag;
 
-
-    public Boolean getDelFlag() {
-        return delFlag;
-    }
-
-    public void setDelFlag(Boolean delFlag) {
-        this.delFlag = delFlag;
-    }
-
     public Long getId() {
         return id;
     }
@@ -77,8 +64,8 @@ public class CourseCourseware implements Serializable {
     public void setId(Long id) {
         this.id = id;
     }
-    
-	public Long getUserId() {
+
+    public Long getUserId() {
         return userId;
     }
 
@@ -94,45 +81,36 @@ public class CourseCourseware implements Serializable {
         this.clientType = clientType;
     }
 
-    public CoursewareEnum getCoursewareType() {
-        return coursewareType;
+    public Long getMusicSheetId() {
+        return musicSheetId;
     }
 
-    public void setCoursewareType(CoursewareEnum coursewareType) {
-        this.coursewareType = coursewareType;
+    public void setMusicSheetId(Long musicSheetId) {
+        this.musicSheetId = musicSheetId;
     }
 
-    public String getCoursewareName() {
-        return coursewareName;
-    }
-
-    public void setCoursewareName(String coursewareName) {
-        this.coursewareName = coursewareName;
-    }
-
-    
-	public String getFileUrl() {
-        return fileUrl;
-    }
-
-    public void setFileUrl(String fileUrl) {
-        this.fileUrl = fileUrl;
-    }
-    
-	public Date getCreateTime() {
+    public Date getCreateTime() {
         return createTime;
     }
 
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
-    
-	public Date getUpdateTime() {
+
+    public Date getUpdateTime() {
         return updateTime;
     }
 
     public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
-    
+
+    public Boolean getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(Boolean delFlag) {
+        this.delFlag = delFlag;
+    }
+
 }

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseCoursewareService.java

@@ -31,4 +31,9 @@ public interface CourseCoursewareService extends IService<CourseCourseware>  {
 
 	@Override
 	boolean removeById(Serializable id);
+
+	/**
+	 * 保存课件数据
+	 */
+	Boolean submit(CourseCourseware courseCourseware);
 }

+ 126 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseCoursewareServiceImpl.java

@@ -2,21 +2,30 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.biz.dal.dao.CourseCoursewareDao;
+import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
+import com.yonge.cooleshow.biz.dal.dto.search.CourseCoursewareSearch;
+import com.yonge.cooleshow.biz.dal.entity.CourseCourseware;
 import com.yonge.cooleshow.biz.dal.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.entity.Teacher;
+import com.yonge.cooleshow.biz.dal.enums.AudioTypeEnum;
 import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
-import com.yonge.cooleshow.biz.dal.service.SysUserService;
+import com.yonge.cooleshow.biz.dal.service.CourseCoursewareService;
+import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
+import com.yonge.cooleshow.biz.dal.vo.CourseCoursewareVo;
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
+import com.yonge.toolset.base.exception.BizException;
 import org.apache.commons.collections.CollectionUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import com.yonge.cooleshow.biz.dal.entity.CourseCourseware;
-import com.yonge.cooleshow.biz.dal.vo.CourseCoursewareVo;
-import com.yonge.cooleshow.biz.dal.dto.search.CourseCoursewareSearch;
-import com.yonge.cooleshow.biz.dal.dao.CourseCoursewareDao;
-import com.yonge.cooleshow.biz.dal.service.CourseCoursewareService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import java.io.Serializable;
+import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -31,6 +40,15 @@ public class CourseCoursewareServiceImpl extends ServiceImpl<CourseCoursewareDao
     @Autowired
     private SysUserMapper userMapper;
 
+    @Autowired
+    private MusicSheetService musicSheetService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private TeacherDao teacherDao;
+
 	@Override
     public CourseCoursewareVo detail(Long id) {
         return baseMapper.detail(id);
@@ -43,6 +61,7 @@ public class CourseCoursewareServiceImpl extends ServiceImpl<CourseCoursewareDao
         if (CollectionUtils.isEmpty(records)) {
             return courseCoursewareVoIPage;
         }
+        // 设置用户名
         Set<Long> userIdList = records.stream().map(CourseCoursewareVo::getUserId).collect(Collectors.toSet());
         List<SysUser> sysUsers = userMapper.selectBatchIds(userIdList);
         if (CollectionUtils.isEmpty(sysUsers)) {
@@ -52,6 +71,60 @@ public class CourseCoursewareServiceImpl extends ServiceImpl<CourseCoursewareDao
         for (CourseCoursewareVo record : records) {
             record.setUsername(userIdUsernameMap.get(record.getUserId()));
         }
+
+        if (query.getStatus() != null && query.getStatus().equals(YesOrNoEnum.YES)) {
+            records = records.stream()
+                   .peek(record -> record.setStatus(YesOrNoEnum.YES)).collect(Collectors.toList());
+            courseCoursewareVoIPage.setRecords(records);
+            return courseCoursewareVoIPage;
+        }
+        // 设置课件失效
+
+        // 1.判断曲目启用
+        for (CourseCoursewareVo record : records) {
+            if (record.getMusicStatus().equals(YesOrNoEnum.NO)) {
+                record.setStatus(YesOrNoEnum.NO);
+            }
+        }
+
+        // 1. 判断免费
+
+        for (CourseCoursewareVo record : records) {
+            if (record.getPaymentType().contains("FREE") && record.getStatus() == null) {
+                record.setStatus(YesOrNoEnum.YES);
+            }
+        }
+
+        // 2. 判断是否购买曲目或专辑
+        List<Long> coursewareIdList = records.stream()
+                                    .filter(record -> record.getStatus() == null)
+                                    .map(CourseCoursewareVo::getId)
+                                    .collect(Collectors.toList());
+
+        coursewareIdList = baseMapper.selectPayMusic(coursewareIdList);
+
+        for (CourseCoursewareVo record : records) {
+            if (coursewareIdList.contains(record.getId())) {
+                record.setStatus(YesOrNoEnum.YES);
+            }
+        }
+        // 4. 判断会员
+
+        List<Teacher> teachers = teacherDao.selectBatchIds(userIdList);
+        userIdList = new HashSet<>();
+        for (Teacher teacher : teachers) {
+            if (teacher.getMembershipEndTime() != null && teacher.getMembershipEndTime().compareTo(new Date()) > 0) {
+                userIdList.add(teacher.getUserId());
+            }
+        }
+
+        for (CourseCoursewareVo record : records) {
+            if (record.getPaymentType().contains("VIP") && record.getStatus() == null && userIdList.contains(record.getUserId())) {
+                record.setStatus(YesOrNoEnum.YES);
+            }
+        }
+
+
         courseCoursewareVoIPage.setRecords(records);
         return courseCoursewareVoIPage;
     }
@@ -63,4 +136,49 @@ public class CourseCoursewareServiceImpl extends ServiceImpl<CourseCoursewareDao
         courseCourseware.setDelFlag(true);
         return updateById(courseCourseware);
     }
+
+    @Override
+    public Boolean submit(CourseCourseware courseCourseware) {
+
+        // 判断用户
+        com.yonge.cooleshow.auth.api.entity.SysUser user = sysUserFeignService.queryUserById(
+                courseCourseware.getUserId());
+        if (user == null) {
+            throw new BizException("用户信息未找到");
+        }
+
+        // 判断是否已经添加到附件
+        Integer count = this.lambdaQuery()
+                            .eq(CourseCourseware::getDelFlag, false)
+                            .eq(CourseCourseware::getUserId, courseCourseware.getUserId())
+                            .eq(CourseCourseware::getMusicSheetId, courseCourseware.getMusicSheetId())
+                            .eq(CourseCourseware::getClientType, courseCourseware.getClientType())
+                            .count();
+        if (count >0 ) {
+            throw new BizException("当前曲目已经添加到附件");
+        }
+
+        // 判断是否有权限添加
+        MusicSheetDetailVo detail = musicSheetService.detail(courseCourseware.getMusicSheetId(), user,
+                                                             courseCourseware.getClientType());
+
+        if (detail == null) {
+            throw new BizException("曲目不存在");
+        }
+        // 判断是否为MP3
+        if (detail.getAudioType().equals(AudioTypeEnum.MIDI)) {
+            throw new BizException("当前曲目不能加入课件");
+        }
+
+        if (detail.getPlay().equals(YesOrNoEnum.NO)) {
+            if (detail.getPaymentType().contains("VIP")) {
+                throw new BizException("请先开通会员");
+            } else if (detail.getPaymentType().contains("CHARGE")) {
+                throw new BizException("请先购买曲目");
+            } else {
+                throw new BizException("不可播放");
+            }
+        }
+        return this.saveOrUpdate(courseCourseware);
+    }
 }

+ 60 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseCoursewareVo.java

@@ -1,9 +1,14 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.yonge.cooleshow.biz.dal.entity.CourseCourseware;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+
 /**
  * @Author: liweifan
  * @Data: 2022-11-02 10:17:44
@@ -15,6 +20,61 @@ public class CourseCoursewareVo extends CourseCourseware{
 	@ApiModelProperty("用户名")
 	private String username;
 
+	@ApiModelProperty(value = "曲谱名称")
+	private String musicSheetName;  //曲谱名称
+
+	@ApiModelProperty("是否有效, 0:失效 1:有效")
+	private YesOrNoEnum status;
+
+	@ApiModelProperty(value = "封面图")
+	private String titleImg;  //曲谱名称
+
+	@ApiModelProperty(hidden = true)
+	private String paymentType;
+
+	@ApiModelProperty(value = "曲目是否启用 0:未启用, 1:启用",hidden = true)
+	private YesOrNoEnum musicStatus;
+
+	public YesOrNoEnum getMusicStatus() {
+		return musicStatus;
+	}
+
+	public void setMusicStatus(YesOrNoEnum musicStatus) {
+		this.musicStatus = musicStatus;
+	}
+
+	public String getPaymentType() {
+		return paymentType;
+	}
+
+	public void setPaymentType(String paymentType) {
+		this.paymentType = paymentType;
+	}
+
+	public YesOrNoEnum getStatus() {
+		return status;
+	}
+
+	public void setStatus(YesOrNoEnum status) {
+		this.status = status;
+	}
+
+	public String getMusicSheetName() {
+		return musicSheetName;
+	}
+
+	public void setMusicSheetName(String musicSheetName) {
+		this.musicSheetName = musicSheetName;
+	}
+
+	public String getTitleImg() {
+		return titleImg;
+	}
+
+	public void setTitleImg(String titleImg) {
+		this.titleImg = titleImg;
+	}
+
 	public String getUsername() {
 		return username;
 	}

+ 59 - 13
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseCoursewareMapper.xml

@@ -5,9 +5,7 @@
             <result column="id_" property="id" />
 	        <result column="user_id_" property="userId" />
 	        <result column="client_type_" property="clientType" />
-	        <result column="courseware_name_" property="coursewareName" />
-	        <result column="courseware_type_" property="coursewareType" />
-	        <result column="file_url_" property="fileUrl" />
+	        <result column="music_sheet_id_" property="musicSheetId" />
 	        <result column="create_time_" property="createTime" />
 	        <result column="update_time_" property="updateTime" />
 		</resultMap>  
@@ -17,12 +15,10 @@
          t.id_ as id
         , t.user_id_ as userId
         , t.client_type_ as clientType
-        , t.courseware_name_ as coursewareName
-        , t.courseware_type_ as coursewareType
-        , t.file_url_ as fileUrl
+         ,t.music_sheet_id_ as musicSheetId
         , t.create_time_ as createTime
         , t.update_time_ as updateTime
-        </sql> 
+        </sql>
     
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.CourseCoursewareVo">
         SELECT
@@ -34,21 +30,71 @@
     <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.CourseCoursewareVo">
 		SELECT         
         	<include refid="baseColumns" />
+        ,ms.music_sheet_name_ as musicSheetName
+        ,ms.state_ as musicStatus
+        ,ms.payment_type_ as paymentType
 		FROM course_courseware t
+        left join music_sheet ms on t.music_sheet_id_ = ms.id_
         <where>
             t.del_flag_ = 0
-            <if test="param.coursewareName != null and param.coursewareName != ''">
-                and t.courseware_name_ like '%${param.coursewareName}%'
-            </if>
-            <if test="param.coursewareType != null">
-                and t.courseware_type_ = #{param.coursewareType}
-            </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.idAndName != null and param.idAndName != ''">
+                and  (ms.music_sheet_name_ like '%${param.idAndName}%' or ms.id_ like '%${param.idAndName}%')
+            </if>
+            <if test="param.musicTagIdList != null and param.musicTagIdList.size() != 0">
+                and
+                <foreach collection="param.musicTagIdList" open="(" close=")" separator="or" item="item">
+                    find_in_set(#{item},ms.music_tag_)
+                </foreach>
+            </if>
+            <if test="param.subjectIdList != null and param.subjectIdList.size() != 0">
+                and
+                <foreach collection="param.subjectIdList" separator="or" item="item"  open="(" close=")" >
+                    find_in_set(#{item},ms.music_subject_)
+                </foreach>
+            </if>
+            <if test="param.status != null and param.status.code == 1">
+                 and (ms.payment_type_ like '%FREE%'
+                or EXISTS (select * from music_sheet_purchase_record mspr where mspr.music_sheet_id_ = ms.id_ and mspr.student_id_ = t.user_id_ and mspr.order_status_ = 'PAID' and mspr.purchase_type_ = 'MUSIC' and mspr.client_type_ = 'TEACHER')
+
+                or  EXISTS (select mspr.music_sheet_id_ from music_sheet_purchase_record mspr
+                left join album_music_relate amr on amr.album_id_ = mspr.music_sheet_id_
+                where mspr.student_id_ = t.user_id_ and mspr.order_status_ = 'PAID' and mspr.purchase_type_ = 'ALBUM' and amr.music_sheet_id_ = ms.id_ and mspr.client_type_ = 'TEACHER' )
+                or (ms.payment_type_ like '%VIP%' and  EXISTS(select 1 from teacher t1 where t1.user_id_ = t.user_id_ and t1.membership_end_time_ > now()))
+                )
+            </if>
         </where>
 	</select>
+
+	<select id="selectPayMusic" resultType="java.lang.Long">
+        select cc.id_ from course_courseware cc
+
+        where
+            (EXISTS (select * from music_sheet_purchase_record mspr
+                       where mspr.music_sheet_id_ = cc.music_sheet_id_
+                         and mspr.student_id_ = cc.user_id_
+                         and mspr.order_status_ = 'PAID'
+                         and mspr.purchase_type_ = 'MUSIC'
+                         and mspr.client_type_ = 'TEACHER')
+
+           or  EXISTS (select mspr.music_sheet_id_ from music_sheet_purchase_record mspr
+                       left join album_music_relate amr on amr.album_id_ = mspr.music_sheet_id_
+                       where mspr.student_id_ = cc.user_id_
+                         and mspr.order_status_ = 'PAID'
+                         and mspr.purchase_type_ = 'ALBUM'
+                         and amr.music_sheet_id_ = cc.music_sheet_id_
+                         and mspr.client_type_ = 'TEACHER'))
+
+        <if test="coursewareIdList != null and coursewareIdList.size() != 0">
+            and cc.id_ in
+            <foreach collection="coursewareIdList" separator="," item="item" open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+    </select>
 </mapper>

+ 38 - 44
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/CourseCoursewareController.java

@@ -1,28 +1,24 @@
-package com.yonge.cooleshow.teacher.controller;
+package com.yonge.cooleshow.admin.controller;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.dto.search.CourseCoursewareSearch;
-import com.yonge.cooleshow.biz.dal.entity.CourseCourseware;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
-import com.yonge.cooleshow.biz.dal.service.CourseCoursewareService;
-import com.yonge.cooleshow.biz.dal.vo.CourseCoursewareVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.mybatis.support.PageUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+
+import com.yonge.toolset.base.util.StringUtil;
+import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.PathVariable;
-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 org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+
+import com.yonge.cooleshow.biz.dal.vo.CourseCoursewareVo;
+import com.yonge.cooleshow.biz.dal.dto.search.CourseCoursewareSearch;
+import com.yonge.cooleshow.biz.dal.entity.CourseCourseware;
+import com.yonge.cooleshow.biz.dal.service.CourseCoursewareService;
+
 import java.util.Date;
 
 @RestController
@@ -30,37 +26,25 @@ import java.util.Date;
 @Api(value = "课件表", tags = "课件表")
 public class CourseCoursewareController extends BaseController {
 
-    @Autowired
-    private CourseCoursewareService courseCoursewareService;
-
 	@Autowired
-	private SysUserFeignService sysUserFeignService;
-    /**
-     * 查询分页
-     */
-    @PostMapping("/page")
-    @ApiOperation(value = "查询分页", notes = "传入courseCoursewareSearch")
-    public HttpResponseResult<PageInfo<CourseCoursewareVo>> page(@RequestBody CourseCoursewareSearch query) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		if (user == null || null == user.getId()) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		query.setUserId(user.getId());
+	private CourseCoursewareService courseCoursewareService;
+
+	/**
+	 * 查询分页
+	 */
+	@PostMapping("/page")
+	@ApiOperation(value = "查询分页", notes = "传入courseCoursewareSearch")
+	public HttpResponseResult<PageInfo<CourseCoursewareVo>> page(@RequestBody CourseCoursewareSearch query) {
 		IPage<CourseCoursewareVo> pages = courseCoursewareService.selectPage(PageUtil.getPage(query), query);
-        return succeed(PageUtil.pageInfo(pages));
+		return succeed(PageUtil.pageInfo(pages));
 	}
-    
-    /**
+
+	/**
 	 * 新增或修改
 	 */
-    @PostMapping("/submit")
-    @ApiOperation(value = "新增或修改", notes = "传入courseCourseware")
+	@PostMapping("/submit")
+	@ApiOperation(value = "新增或修改", notes = "传入courseCourseware")
 	public HttpResponseResult submit(@Valid @RequestBody CourseCourseware courseCourseware) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		if (user == null || null == user.getId()) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		courseCourseware.setUserId(user.getId());
 		if (courseCourseware.getId() != null) {
 			courseCourseware.setUpdateTime(new Date());
 		} else {
@@ -68,10 +52,10 @@ public class CourseCoursewareController extends BaseController {
 			courseCourseware.setCreateTime(new Date());
 		}
 		courseCourseware.setClientType(ClientEnum.TEACHER);
-        return status(courseCoursewareService.saveOrUpdate(courseCourseware));
-    }
+		return status(courseCoursewareService.submit(courseCourseware));
+	}
 
- 	/**
+	/**
 	 * 删除
 	 */
 	@PostMapping("/remove/{id}")
@@ -79,4 +63,14 @@ public class CourseCoursewareController extends BaseController {
 	public HttpResponseResult remove(@PathVariable Long id ) {
 		return status(courseCoursewareService.removeById(id));
 	}
+
+
+	/**
+	 * 删除
+	 */
+	@PostMapping("/remove")
+	@ApiOperation(value = "批量删除", notes = "传入id")
+	public HttpResponseResult remove(@RequestParam String ids ) {
+		return status(courseCoursewareService.removeByIds(StringUtil.toLongList(ids)));
+	}
 }

+ 38 - 44
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/CourseCoursewareController.java

@@ -1,28 +1,24 @@
-package com.yonge.cooleshow.website.controller;
+package com.yonge.cooleshow.admin.controller;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.dto.search.CourseCoursewareSearch;
-import com.yonge.cooleshow.biz.dal.entity.CourseCourseware;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
-import com.yonge.cooleshow.biz.dal.service.CourseCoursewareService;
-import com.yonge.cooleshow.biz.dal.vo.CourseCoursewareVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.mybatis.support.PageUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+
+import com.yonge.toolset.base.util.StringUtil;
+import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.PathVariable;
-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 org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+
+import com.yonge.cooleshow.biz.dal.vo.CourseCoursewareVo;
+import com.yonge.cooleshow.biz.dal.dto.search.CourseCoursewareSearch;
+import com.yonge.cooleshow.biz.dal.entity.CourseCourseware;
+import com.yonge.cooleshow.biz.dal.service.CourseCoursewareService;
+
 import java.util.Date;
 
 @RestController
@@ -30,37 +26,25 @@ import java.util.Date;
 @Api(value = "课件表", tags = "课件表")
 public class CourseCoursewareController extends BaseController {
 
-    @Autowired
-    private CourseCoursewareService courseCoursewareService;
-
 	@Autowired
-	private SysUserFeignService sysUserFeignService;
-    /**
-     * 查询分页
-     */
-    @PostMapping("/page")
-    @ApiOperation(value = "查询分页", notes = "传入courseCoursewareSearch")
-    public HttpResponseResult<PageInfo<CourseCoursewareVo>> page(@RequestBody CourseCoursewareSearch query) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		if (user == null || null == user.getId()) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		query.setUserId(user.getId());
+	private CourseCoursewareService courseCoursewareService;
+
+	/**
+	 * 查询分页
+	 */
+	@PostMapping("/page")
+	@ApiOperation(value = "查询分页", notes = "传入courseCoursewareSearch")
+	public HttpResponseResult<PageInfo<CourseCoursewareVo>> page(@RequestBody CourseCoursewareSearch query) {
 		IPage<CourseCoursewareVo> pages = courseCoursewareService.selectPage(PageUtil.getPage(query), query);
-        return succeed(PageUtil.pageInfo(pages));
+		return succeed(PageUtil.pageInfo(pages));
 	}
-    
-    /**
+
+	/**
 	 * 新增或修改
 	 */
-    @PostMapping("/submit")
-    @ApiOperation(value = "新增或修改", notes = "传入courseCourseware")
+	@PostMapping("/submit")
+	@ApiOperation(value = "新增或修改", notes = "传入courseCourseware")
 	public HttpResponseResult submit(@Valid @RequestBody CourseCourseware courseCourseware) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		if (user == null || null == user.getId()) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		courseCourseware.setUserId(user.getId());
 		if (courseCourseware.getId() != null) {
 			courseCourseware.setUpdateTime(new Date());
 		} else {
@@ -68,10 +52,10 @@ public class CourseCoursewareController extends BaseController {
 			courseCourseware.setCreateTime(new Date());
 		}
 		courseCourseware.setClientType(ClientEnum.TEACHER);
-        return status(courseCoursewareService.saveOrUpdate(courseCourseware));
-    }
+		return status(courseCoursewareService.submit(courseCourseware));
+	}
 
- 	/**
+	/**
 	 * 删除
 	 */
 	@PostMapping("/remove/{id}")
@@ -79,4 +63,14 @@ public class CourseCoursewareController extends BaseController {
 	public HttpResponseResult remove(@PathVariable Long id ) {
 		return status(courseCoursewareService.removeById(id));
 	}
+
+
+	/**
+	 * 删除
+	 */
+	@PostMapping("/remove")
+	@ApiOperation(value = "批量删除", notes = "传入id")
+	public HttpResponseResult remove(@RequestParam String ids ) {
+		return status(courseCoursewareService.removeByIds(StringUtil.toLongList(ids)));
+	}
 }