浏览代码

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

yonge 4 年之前
父节点
当前提交
f5d4d994d9

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -260,4 +260,26 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     List<MusicGroup> getTeacherMusicGroup(@Param("teacherId") Integer teacherId);
+
+    /**
+     * @describe 获取学员所在乐团名称
+     * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+     * @author zouxuan
+     * @date 2020/9/7
+     * @time 14:16
+     * @param userId:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.MusicCardDto>
+     */
+    List<MusicCardDto> queryUserMusicInfos(Integer userId);
+
+    /**
+     * @describe 获取分部下乐团名称列表
+     * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+     * @author zouxuan
+     * @date 2020/9/7
+     * @time 14:31
+     * @param organId:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.MusicCardDto>
+     */
+    List<MusicCardDto> queryOrganMusicInfos(String organId);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SporadicChargeInfo.java

@@ -57,6 +57,17 @@ public class SporadicChargeInfo {
 
 	private String orderType;
 
+	@ApiModelProperty(value = "所属乐团", required = true)
+	private String musicGroupId;
+
+	public String getMusicGroupId() {
+		return musicGroupId;
+	}
+
+	public void setMusicGroupId(String musicGroupId) {
+		this.musicGroupId = musicGroupId;
+	}
+
 	public Integer getOpenFlag() {
 		return openFlag;
 	}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java

@@ -283,6 +283,17 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	int pushMessage(String musicGroupId, String classGroupIds) throws IOException;
 
 	/**
+	 * @describe 获取分部乐团列表名称
+	 * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+	 * @author zouxuan
+	 * @date 2020/9/7
+	 * @time 14:28
+	 * @param :
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.MusicCardDto>
+	 */
+	List<MusicCardDto> queryOrganMusicInfos(String organId);
+
+	/**
 	 * 补全musicGroupStudentFee表数据
 	 * @param musicGroupIds
 	 */

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentManageService.java

@@ -46,6 +46,12 @@ public interface StudentManageService {
     List<StudentManageBaseInfoOfMusicGroupDto> findStudentMusicGroupsByUserId(Integer userId);
 
     /**
+     * 获取学生所在乐团名称
+     * @return
+     */
+    List<MusicCardDto> queryUserMusicInfos(Integer userId);
+
+    /**
      * @Author: Joburgess
      * @Date: 2019/9/20
      * 获取学生排课信息

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

@@ -32,6 +32,11 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      */
     public static final String ADVANCE_LEAVE_HOURS = "advance_leave_hours";
 
+    /**
+     * 最早请假提前时间
+     */
+    String EARLIEST_TIME_FOR_LEAVE="earliest_time_for_leave";
+
     String ENABLE_TEACHER_COURSE_ADJUST_DEFAULT_HOURS = "enable_teacher_course_adjust_default_hours";
 
     /**

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

@@ -818,6 +818,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         Map<String, Object> result = new HashMap<>(3);
         result.put("vipAppealDaysRange", sysConfigDao.findConfigValue(SysConfigService.VIP_APPEAL_DAYS_RANGE));
         result.put("advanceLeaveHours", Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_LEAVE_HOURS)));
+        result.put("earliestTimeForLeave", Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.EARLIEST_TIME_FOR_LEAVE)));
         result.put("joinRoomBeforeTime",studentAttendanceAfterTimeConfig.getParanValue(Integer.class));
 		result.put("courseBeforeBufferTime", courseBeforeBufferTime.getParanValue(Integer.class));
 		result.put("courseAfterBufferTime", courseAfterBufferTime.getParanValue(Integer.class));
@@ -2745,16 +2746,15 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 						}
 
 						//线上小班课
-						if(newCourseSchedule.getType() == CourseScheduleType.HIGH_ONLINE){
+						if(newCourseSchedule.getType() == CourseScheduleType.HIGH_ONLINE || newCourseSchedule.getType() == CourseScheduleType.MUSIC_NETWORK){
 							Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(ts.getClassGroupId());
 							BigDecimal salary = JSON.parseObject(tdms.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
+							if(Objects.isNull(salary)){
+								throw new BizException("请设置老师默认课酬");
+							}
 							ts.setExpectSalary(salary);
 						}
 
-						if (newCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) {
-							ts.setExpectSalary(JSON.parseObject(tdms.getSalaryRuleJson()).getBigDecimal("1"));
-						}
-
 					} else if (newCourseSchedule.getGroupType() == GroupType.VIP) {
 						Map<String, BigDecimal> salaryMap = vipGroupService.countVipGroupPredictFee(vipGroup, teacherId, null, null);
 

+ 41 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -18,6 +18,7 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 
+import org.apache.poi.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -90,7 +91,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             .getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
 
     //按节数计算课酬的课程类型
-    protected static final Set<CourseSchedule.CourseScheduleType> UNIT_PRICE_COURSE_TYPES=new HashSet<>(Arrays.asList(CourseSchedule.CourseScheduleType.CLASSROOM, CourseSchedule.CourseScheduleType.HIGH, CourseSchedule.CourseScheduleType.HIGH_ONLINE));
+    protected static final Set<CourseSchedule.CourseScheduleType> UNIT_PRICE_COURSE_TYPES=new HashSet<>(Arrays.asList(CourseSchedule.CourseScheduleType.CLASSROOM, CourseSchedule.CourseScheduleType.HIGH, CourseSchedule.CourseScheduleType.HIGH_ONLINE, CourseSchedule.CourseScheduleType.MUSIC_NETWORK));
 
     @Override
     public BaseDAO<Long, CourseScheduleTeacherSalary> getDAO() {
@@ -516,6 +517,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         if (CollectionUtils.isEmpty(courseScheduleIds)) {
             return;
         }
+
         //获取课程对应教学点补贴
         List<Map<Long, BigDecimal>> courseSubsidyByCourses = courseScheduleTeacherSalaryDao.findCourseSubsidyByCourses(courseScheduleIds);
         Map<Integer, BigDecimal> courseSubsidyMap = MapUtil.convertIntegerMap(courseSubsidyByCourses);
@@ -531,6 +533,19 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             return;
         }
 
+        //需要根据实际上课学员结算课酬的课程编号
+        List<Long> needStudentAttendanceCourseScheduleIds = yesterdayCourseSchedules.stream()
+                .filter(c -> CourseSchedule.CourseScheduleType.HIGH_ONLINE.equals(c.getType()) || CourseSchedule.CourseScheduleType.MUSIC_NETWORK.equals(c.getType()))
+                .map(CourseSchedule::getId).collect(Collectors.toList());
+
+        List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseIds(needStudentAttendanceCourseScheduleIds);
+        Map<Long, Long> courseNormalStudentsMap = new HashMap<>();
+        if(!CollectionUtils.isEmpty(studentAttendances)){
+            courseNormalStudentsMap =studentAttendances.stream()
+                    .filter(studentAttendance -> StudentAttendanceStatusEnum.NORMAL.equals(studentAttendance.getStatus()))
+                    .collect(Collectors.groupingBy(StudentAttendance::getId, Collectors.counting()));
+        }
+
         //课程对应乐团结算方式集合
         List<Map<String, String>> musicGroupSettlementTypeByCourse = courseScheduleTeacherSalaryDao.findMusicGroupSettlementTypeByCourse(courseScheduleIds);
         Map<String, String> musicGroupSettlementsMap = MapUtil.convertMybatisMap(musicGroupSettlementTypeByCourse);
@@ -596,7 +611,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         //用户账户自己变动信息列表
 //        List<SysUserCashAccountDetail> userCashAccountDetails = new ArrayList<>();
         //计算课酬
-        courseScheduleTeacherSalaries.forEach(courseScheduleTeacherSalary -> {
+        for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
             /*TeacherAttendance teacherAttendanceInfo = teacherAttendanceDao.findByTeacherAttendanceInfo(courseScheduleTeacherSalary.getUserId().longValue(), courseScheduleTeacherSalary.getCourseScheduleId());
             if(Objects.isNull(teacherAttendanceInfo)
                 ||(Objects.isNull(teacherAttendanceInfo.getSignInTime())&&Objects.isNull(teacherAttendanceInfo.getSignOutTime()))){
@@ -680,6 +695,29 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     }
                     teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
                 }
+            }else if(CourseSchedule.CourseScheduleType.MUSIC_NETWORK.equals(courseSchedule.getType())||CourseSchedule.CourseScheduleType.HIGH_ONLINE.equals(courseSchedule.getType())){
+                //根据课程类型获取对应的默认课酬设置列表
+                List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithCourseType = teacherDefaultMusicGroupSalariesGroupByCourseType.get(courseSchedule.getType());
+                if (CollectionUtils.isEmpty(teacherDefaultMusicGroupSalariesWithCourseType)) {
+                    LOGGER.error("存在未指定结算方式的课程类型[{}]", courseScheduleTeacherSalary.getId());
+                }
+
+                //根据教师编号将对应结算方式下的默认课酬设置分组
+                Map<Integer, TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesGroupByTeacherId = teacherDefaultMusicGroupSalariesWithCourseType.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getUserId, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
+
+                TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(courseScheduleTeacherSalary.getUserId());
+
+                Long normalStudentNum = courseNormalStudentsMap.get(courseSchedule.getId());
+                if(Objects.isNull(normalStudentNum)){
+                    normalStudentNum = Long.valueOf(0);
+                }
+                if(Objects.nonNull(teacherDefaultMusicGroupSalaryWithTeacherId)&& org.apache.commons.lang3.StringUtils.isNoneBlank(teacherDefaultMusicGroupSalaryWithTeacherId.getSalaryRuleJson())){
+                    JSONObject salaryRuleJsonObject = JSONObject.parseObject(teacherDefaultMusicGroupSalaryWithTeacherId.getSalaryRuleJson());
+                    teacherSalary = salaryRuleJsonObject.getBigDecimal(normalStudentNum.toString());
+                }
+                if(Objects.isNull(teacherSalary)){
+                    teacherSalary = BigDecimal.ZERO;
+                }
             }else{
                 teacherSalary=courseScheduleTeacherSalary.getTeacherActualSalary();
             }
@@ -706,7 +744,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 //            teacherCashAccountDetail.setAttribute(courseScheduleTeacherSalary.getCourseScheduleId().toString());
 //            userCashAccountDetails.add(teacherCashAccountDetail);
 
-        });
+        }
 //        sysUserCashAccountDetailDao.batchInsert(userCashAccountDetails);
     }
 

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1108,6 +1108,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         return studentMap.size();
     }
 
+    @Override
+    public List<MusicCardDto> queryOrganMusicInfos(String organId) {
+        return musicGroupDao.queryOrganMusicInfos(organId);
+    }
+
 //    @Override
 //    public void musicGroupStudentFeePatch(List<String> musicGroupIds) {
 //        if(musicGroupIds != null && musicGroupIds.size() > 0){
@@ -1133,6 +1138,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         return musicCardDtos;
     }
 
+
     @Override
     public MusicCardDto queryPersonalMusicGroups(Integer userId) {
         SysUser sysUser = sysUserFeignService.queryUserById(userId);

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -324,10 +324,20 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 			hours = Integer.parseInt(str);
 		}
 
+		int earliestTimeForLeave = 168;
+		SysConfig earliestTimeForLeaveConfig = sysConfigService.findByParamName(SysConfigService.EARLIEST_TIME_FOR_LEAVE);
+		if(Objects.nonNull(earliestTimeForLeaveConfig)){
+			earliestTimeForLeave = Integer.parseInt(earliestTimeForLeaveConfig.getParanValue());
+		}
+
 		if(DateUtil.addHours(date, hours).after(courseSchedule.getStartClassTime())){
 			throw new BizException("开课{}小时之前才可以请假",hours);
 		}
 
+		if(DateUtil.addHours(date, 168).before(courseSchedule.getStartClassTime())){
+			throw new BizException("请在开课前{}天内请假",earliestTimeForLeave/24);
+		}
+
 		StudentAttendance studentAttendance  = studentAttendanceDao.findByStatusAndCourseScheduleId(userId,courseScheduleId.intValue());
 		if(Objects.isNull(studentAttendance)){
 			studentAttendance=new StudentAttendance();

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

@@ -229,6 +229,11 @@ public class StudentManageServiceImpl implements StudentManageService {
     }
 
     @Override
+    public List<MusicCardDto> queryUserMusicInfos(Integer userId) {
+        return musicGroupDao.queryUserMusicInfos(userId);
+    }
+
+    @Override
     public PageInfo findStudentCourseList(StudentManageCourseQueryInfo queryInfo) {
         PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Map<String, Object> params = new HashMap<String, Object>();

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

@@ -3040,6 +3040,7 @@
         LEFT JOIN `sys_user` su ON su.`id_` = cssp.`user_id_`
         LEFT JOIN `sys_user` edut ON edut.`id_` = vg.`educational_teacher_id_`
         WHERE cssp.`group_type_` = 'VIP'
+        AND vg.group_status_!=3
         <if test="organIds != null and organIds != ''">
             AND FIND_IN_SET(vg.organ_id_, #{organIds})
         </if>

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

@@ -576,4 +576,25 @@
         LEFT JOIN music_group mg ON mg.id_ = cs.music_group_id_
         WHERE cs.actual_teacher_id_ = #{teacherId} AND cs.group_type_ = 'MUSIC' GROUP BY mg.id_
     </select>
+    <select id="queryUserMusicInfos" resultMap="queryUserMusicGroupsMap">
+        SELECT mg.name_ music_group_name_,mg.id_ music_group_id_
+        FROM student_registration sr
+        LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        WHERE sr.user_id_ = #{userId}
+        AND mg.status_ IN ('APPLY','PAY','PREPARE','PROGRESS')
+        AND sr.music_group_status_ != 'QUIT'
+        GROUP BY mg.id_
+        ORDER BY mg.create_time_ DESC
+    </select>
+    <select id="queryOrganMusicInfos" resultMap="queryUserMusicGroupsMap">
+        SELECT
+        mg.name_ music_group_name_,
+        mg.id_ music_group_id_
+        FROM music_group mg
+        WHERE mg.status_ IN ('APPLY','PAY','PREPARE','PROGRESS')
+        <if test="organId != null and organId != ''">
+            AND FIND_IN_SET(mg.organ_id_,#{organId})
+        </if>
+        ORDER BY mg.create_time_ DESC
+    </select>
 </mapper>

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

@@ -18,6 +18,7 @@
 		<result column="open_flag_" property="openFlag" />
 		<result column="organ_name_" property="organName" />
 		<result column="user_id_" property="userId" />
+		<result column="music_group_id_" property="musicGroupId" />
 	</resultMap>
 
 	<!-- 根据主键查询一条记录 -->
@@ -34,15 +35,18 @@
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SporadicChargeInfo"
 		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO sporadic_charge_info
-		(title_,charge_type_,organ_id_,amount_,discount_amount_,detail_,create_time_,update_time_,operator_id_,user_id_)
+		(title_,charge_type_,organ_id_,amount_,discount_amount_,detail_,create_time_,update_time_,operator_id_,user_id_,music_group_id_)
 		VALUES(#{title},#{chargeType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-		#{organId},#{amount},#{discountAmount},#{detail},now(),now(),#{operatorId},#{userId})
+		#{organId},#{amount},#{discountAmount},#{detail},now(),now(),#{operatorId},#{userId},#{musicGroupId})
 	</insert>
 
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.SporadicChargeInfo">
 		UPDATE sporadic_charge_info
 		<set>
+			<if test="musicGroupId != null">
+				music_group_id_ = #{musicGroupId},
+			</if>
 			<if test="title != null">
 				title_ = #{title},
 			</if>

+ 64 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ImportController.java

@@ -0,0 +1,64 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.service.GoodsService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.util.date.DateUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.tomcat.util.http.fileupload.IOUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Date;
+import java.util.List;
+
+@RequestMapping("import")
+@Api(tags = "数据导入服务")
+@RestController
+public class ImportController extends BaseController {
+
+    @Autowired
+    private GoodsService goodsService;
+
+    @ApiOperation(value = "导入商品")
+    @PostMapping(value = "goods")
+    @PreAuthorize("@pcs.hasPermissions('import/goods')")
+    public HttpResponseResult<List<Goods>> importExamSong(@RequestParam("file") MultipartFile file) throws Exception {
+        return succeed(goodsService.importGoods(file));
+    }
+
+    @ApiOperation(value = "获取商品导入模板")
+    @GetMapping(value = "getGoodsTemplate")
+    @PreAuthorize("@pcs.hasPermissions('import/getGoodsTemplate')")
+    public void getGoodsTemplate(HttpServletResponse response) throws IOException {
+        InputStream inputStream = new ClassPathResource("excelTemplate/goods.xls").getInputStream();
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=goods-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            IOUtils.copy(inputStream, outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+}

+ 16 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java

@@ -259,4 +259,20 @@ public class MusicGroupController extends BaseController {
 		return succeed();
 	}
 
+	@ApiOperation("获取分部乐团列表名称")
+	@GetMapping(value = "/queryOrganMusicInfos")
+	@PreAuthorize("@pcs.hasPermissions('musicGroup/queryOrganMusicInfos')")
+	public Object queryOrganMusicInfos() {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			return failed("用户信息获取失败");
+		}
+		String organId = null;
+		if(!sysUser.getIsSuperAdmin()){
+			Employee employee = employeeDao.get(sysUser.getId());
+			organId = employee.getOrganIdList();
+		}
+		return succeed(musicGroupService.queryOrganMusicInfos(organId));
+	}
+
 }

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -16,6 +16,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -150,6 +151,13 @@ public class StudentManageController extends BaseController {
         return succeed(studentManageService.findStudentMusicGroupsByUserId(userId));
     }
 
+    @ApiOperation("获取学生所在乐团列表名称")
+    @GetMapping(value = "/queryUserMusicInfos")
+    @PreAuthorize("@pcs.hasPermissions('studentManage/queryUserMusicInfos')")
+    public Object queryUserMusicInfos(Integer userId) {
+        return succeed(studentManageService.queryUserMusicInfos(userId));
+    }
+
     @ApiOperation(value = "根据乐团获取排课列表")
     @GetMapping("/findStudentCourses")
     @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentCourses')")