浏览代码

智能陪练

zouxuan 4 年之前
父节点
当前提交
f437bd6fbc

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMusicScoreAccompanimentDao.java

@@ -3,8 +3,18 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.SysMusicScoreAccompaniment;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface SysMusicScoreAccompanimentDao extends BaseDAO<Integer, SysMusicScoreAccompaniment> {
 
-	
+
+    void batchInsert(@Param("sysMusicScoreAccompaniments") List<SysMusicScoreAccompaniment> sysMusicScoreAccompaniments, @Param("sysMusicScoreId") Integer sysMusicScoreId);
+
+    void batchDel(List<Integer> delExamSongAccompanimentIds);
+
+    List<Integer> findSubjectByMusicScoreId(@Param("sysMusicScoreId") Integer sysMusicScoreId, @Param("idList") List<Integer> idList);
+
+    void batchUpdate(List<SysMusicScoreAccompaniment> sysMusicScoreAccompaniments);
 }

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

@@ -13,6 +13,16 @@ public class MusicScoreDto {
     @ApiModelProperty(value = "曲库伴奏", required = false)
     private List<SysMusicScoreAccompaniment> sysMusicScoreAccompaniments;
 
+    private List<Integer> delExamSongAccompanimentIds;
+
+    public List<Integer> getDelExamSongAccompanimentIds() {
+        return delExamSongAccompanimentIds;
+    }
+
+    public void setDelExamSongAccompanimentIds(List<Integer> delExamSongAccompanimentIds) {
+        this.delExamSongAccompanimentIds = delExamSongAccompanimentIds;
+    }
+
     public SysMusicScore getSysMusicScore() {
         return sysMusicScore;
     }

+ 59 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreServiceImpl.java

@@ -1,20 +1,35 @@
 package com.ym.mec.biz.service.impl;
 
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.SysMusicScoreAccompanimentDao;
 import com.ym.mec.biz.dal.dao.SysMusicScoreDao;
 import com.ym.mec.biz.dal.dto.MusicScoreDto;
 import com.ym.mec.biz.dal.entity.SysMusicScore;
+import com.ym.mec.biz.dal.entity.SysMusicScoreAccompaniment;
 import com.ym.mec.biz.service.SysMusicScoreService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicScore> implements SysMusicScoreService {
 	
 	@Autowired
 	private SysMusicScoreDao sysMusicScoreDao;
+	@Autowired
+	private SysMusicScoreAccompanimentDao sysMusicScoreAccompanimentDao;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
 
 	@Override
 	public BaseDAO<Integer, SysMusicScore> getDAO() {
@@ -22,13 +37,55 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public void updateMusicScore(MusicScoreDto examSongDto) {
-
+		SysMusicScore sysMusicScore = examSongDto.getSysMusicScore();
+		sysMusicScoreDao.update(sysMusicScore);
+		List<Integer> delExamSongAccompanimentIds = examSongDto.getDelExamSongAccompanimentIds();
+		if(delExamSongAccompanimentIds != null && delExamSongAccompanimentIds.size() > 0){
+			sysMusicScoreAccompanimentDao.batchDel(delExamSongAccompanimentIds);
+		}
+		List<SysMusicScoreAccompaniment> sysMusicScoreAccompaniments = examSongDto.getSysMusicScoreAccompaniments();
+		if(sysMusicScoreAccompaniments != null && sysMusicScoreAccompaniments.size() > 0){
+			List<Integer> subjectIdList = sysMusicScoreAccompaniments.stream().map(e -> e.getSubjectId()).collect(Collectors.toList());
+			subjectIdList.removeAll(Collections.singleton(null));
+			if(subjectIdList.size() > 0){
+				List<Integer> idList = sysMusicScoreAccompaniments.stream().map(e -> e.getId()).collect(Collectors.toList());
+				List<Integer> subjectIds = sysMusicScoreAccompanimentDao.findSubjectByMusicScoreId(sysMusicScore.getId(),idList);
+				int subjectSize = subjectIds.size() + subjectIdList.size();
+				subjectIdList.addAll(subjectIds);
+				int size = new HashSet<>(subjectIdList).size();
+				if(size < subjectSize){
+					throw new BizException("操作失败:请勿提交重复的伴奏声部");
+				}
+			}
+			//获取需要修改的伴奏
+			List<SysMusicScoreAccompaniment> updateCollect = sysMusicScoreAccompaniments.stream().filter(e -> e.getId() != null).collect(Collectors.toList());
+			if(updateCollect.size() > 0){
+				sysMusicScoreAccompanimentDao.batchUpdate(updateCollect);
+			}
+			//获取需要新增的伴奏
+			List<SysMusicScoreAccompaniment> addCollect = sysMusicScoreAccompaniments.stream().filter(e -> e.getId() == null).collect(Collectors.toList());
+			if(addCollect.size() > 0){
+				sysMusicScoreAccompanimentDao.batchInsert(addCollect,sysMusicScore.getId());
+			}
+		}
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public void add(MusicScoreDto examSongDto) {
-
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if(sysUser == null){
+			throw new BizException("请登录");
+		}
+		SysMusicScore sysMusicScore = examSongDto.getSysMusicScore();
+		sysMusicScore.setCreateUserId(sysUser.getId());
+		sysMusicScoreDao.insert(sysMusicScore);
+		List<SysMusicScoreAccompaniment> sysMusicScoreAccompaniments = examSongDto.getSysMusicScoreAccompaniments();
+		if(sysMusicScoreAccompaniments != null && sysMusicScoreAccompaniments.size() > 0){
+			sysMusicScoreAccompanimentDao.batchInsert(sysMusicScoreAccompaniments,sysMusicScore.getId());
+		}
 	}
 
 	@Override

+ 15 - 9
mec-biz/src/main/resources/config/mybatis/SysMusicScoreAccompanimentMapper.xml

@@ -30,15 +30,14 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysMusicScoreAccompaniment" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!--
-		<selectKey resultClass="int" keyProperty="id" > 
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
-		</selectKey>
-		-->
-		INSERT INTO sys_music_score_accompaniment (id_,exam_song_id_,subject_id_,mp3_url_,del_flag_,speed_,xml_url_,create_time_,update_time_) VALUES(#{id},#{examSongId},#{subjectId},#{mp3Url},#{delFlag},#{speed},#{xmlUrl},#{createTime},#{updateTime})
+		INSERT INTO sys_music_score_accompaniment (exam_song_id_,subject_id_,mp3_url_,del_flag_,speed_,xml_url_,create_time_,update_time_)
+		VALUES(#{examSongId},#{subjectId},#{mp3Url},#{delFlag},#{speed},#{xmlUrl},NOW(),NOW())
 	</insert>
-	
-	<!-- 根据主键查询一条记录 -->
+    <insert id="batchInsert">
+
+	</insert>
+
+    <!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.SysMusicScoreAccompaniment">
 		UPDATE sys_music_score_accompaniment <set>
 <if test="delFlag != null">
@@ -70,7 +69,11 @@ create_time_ = #{createTime},
 </if>
 </set> WHERE id_ = #{id} 
 	</update>
-	
+	<update id="batchDel">
+
+	</update>
+	<update id="batchUpdate"></update>
+
 	<!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
 		DELETE FROM sys_music_score_accompaniment WHERE id_ = #{id} 
@@ -85,4 +88,7 @@ create_time_ = #{createTime},
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM sys_music_score_accompaniment
 	</select>
+	<select id="findSubjectByMusicScoreId" resultType="java.lang.Integer">
+
+	</select>
 </mapper>