浏览代码

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

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
zouxuan 4 年之前
父节点
当前提交
984e49893c
共有 23 个文件被更改,包括 419 次插入227 次删除
  1. 8 18
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/LoginEntity.java
  2. 0 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/WebSecurityConfig.java
  3. 3 21
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/PhoneLoginAuthenticationFilter.java
  4. 41 5
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/PhoneAuthenticationProvider.java
  5. 9 9
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java
  6. 45 67
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java
  7. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  8. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  9. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysExamSongDao.java
  10. 0 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  11. 71 71
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  12. 29 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  13. 6 0
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  14. 12 9
      mec-im/src/main/java/com/ym/controller/RoomController.java
  15. 42 0
      mec-im/src/main/java/com/ym/mec/im/message/ExamSongDownloadMessageMessage.java
  16. 0 3
      mec-im/src/main/java/com/ym/mec/im/message/MetronomeMessageMessage.java
  17. 1 0
      mec-im/src/main/java/com/ym/pojo/DeviceTypeEnum.java
  18. 41 0
      mec-im/src/main/java/com/ym/pojo/ExamSongDownloadData.java
  19. 0 3
      mec-im/src/main/java/com/ym/pojo/PlayMidiMessageData.java
  20. 3 1
      mec-im/src/main/java/com/ym/pojo/RoomResult.java
  21. 41 6
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  22. 17 1
      mec-im/src/main/java/com/ym/service/RoomService.java
  23. 22 8
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupRegisterController.java

+ 8 - 18
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/LoginEntity.java

@@ -3,25 +3,23 @@ package com.ym.mec.auth.api.entity;
 public class LoginEntity {
     private String smsCode;
 
-    private String isLessee;
-
     private String clientId;
 
     private String clientSecret;
 
-    private String isRegister;
+    private Boolean isRegister;
 
     private String phone;
 
-    public String getIsRegister() {
-        return isRegister;
-    }
+    public Boolean getIsRegister() {
+		return isRegister;
+	}
 
-    public void setIsRegister(String isRegister) {
-        this.isRegister = isRegister;
-    }
+	public void setIsRegister(Boolean isRegister) {
+		this.isRegister = isRegister;
+	}
 
-    public String getSmsCode() {
+	public String getSmsCode() {
         return smsCode;
     }
 
@@ -29,14 +27,6 @@ public class LoginEntity {
         this.smsCode = smsCode;
     }
 
-    public String getIsLessee() {
-        return isLessee;
-    }
-
-    public void setIsLessee(String isLessee) {
-        this.isLessee = isLessee;
-    }
-
     public String getClientId() {
         return clientId;
     }

+ 0 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/WebSecurityConfig.java

@@ -124,7 +124,6 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
 		filter.setAuthenticationManager(authenticationManagerBean());
 		filter.setAuthenticationSuccessHandler(successEventHandler);
 		filter.setAuthenticationFailureHandler(failureEvenHandler);
-		filter.setSysUserService(sysUserService);
 		return filter;
 	}
 

+ 3 - 21
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/PhoneLoginAuthenticationFilter.java

@@ -10,16 +10,13 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.authentication.AbstractAuthenticationToken;
 import org.springframework.security.authentication.AuthenticationServiceException;
-import org.springframework.security.authentication.LockedException;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.AuthenticationException;
 import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
 import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
 
-import com.ym.mec.auth.api.dto.SysUserInfo;
 import com.ym.mec.auth.api.entity.LoginEntity;
 import com.ym.mec.auth.config.token.PhoneAuthenticationToken;
-import com.ym.mec.auth.service.SysUserService;
 import com.ym.mec.common.security.SecurityConstants;
 
 public class PhoneLoginAuthenticationFilter extends AbstractAuthenticationProcessingFilter {
@@ -27,14 +24,11 @@ public class PhoneLoginAuthenticationFilter extends AbstractAuthenticationProces
 	private static final String SPRING_SECURITY_RESTFUL_PHONE_KEY = "phone";
 	private static final String SPRING_SECURITY_RESTFUL_VERIFY_CODE_KEY = "smsCode";
 	private static final String clientIdParameter = "clientId";
-	private static final String IS_REGISTER_PARAMETER = "register";
 	private static final String IS_LESSEE = "isLessee";
 
 	private static final String SPRING_SECURITY_RESTFUL_LOGIN_URL = "/smsLogin";
 	private boolean postOnly = true;
 
-	private SysUserService sysUserService;
-
 	public PhoneLoginAuthenticationFilter() {
 		super(new AntPathRequestMatcher(SPRING_SECURITY_RESTFUL_LOGIN_URL, "POST"));
 	}
@@ -49,29 +43,21 @@ public class PhoneLoginAuthenticationFilter extends AbstractAuthenticationProces
 		// 手机验证码登陆
 		String principal = obtainParameter(request, SPRING_SECURITY_RESTFUL_PHONE_KEY);
 		String credentials = obtainParameter(request, SPRING_SECURITY_RESTFUL_VERIFY_CODE_KEY);
-		String isRegister = obtainParameter(request, IS_REGISTER_PARAMETER);
 		// 是否是租户
 		String isLessee = obtainParameter(request, IS_LESSEE);
+		
+		boolean isRegister = StringUtils.equals("1", isLessee) || StringUtils.equals("true", isLessee);
 
 		String clientId = request.getParameter(clientIdParameter).toUpperCase();
-
-//		SysUserInfo userInfo = sysUserService.queryUserInfoByPhone(principal);
-		SysUserInfo userInfo = sysUserService.queryUserInfoByPhoneAndClient(principal,clientId);
-		if (userInfo != null && StringUtils.isNotEmpty(isLessee)) {
-			throw new LockedException("用户已存在");
-		}
+		
 		if ("EDUCATION".equals(clientId)) {
 			clientId = "SYSTEM";
 		}
-		if (userInfo != null && !userInfo.getSysUser().getUserType().contains(clientId)) {
-			throw new LockedException("用户不存在,请联系教务老师");
-		}
 
 		principal = principal.trim();
 
 		LoginEntity loginEntity = new LoginEntity();
 		loginEntity.setClientId(clientId);
-		loginEntity.setIsLessee(isLessee);
 		loginEntity.setPhone(principal);
 		loginEntity.setSmsCode(credentials);
 		loginEntity.setIsRegister(isRegister);
@@ -99,8 +85,4 @@ public class PhoneLoginAuthenticationFilter extends AbstractAuthenticationProces
 		return result == null ? "" : result;
 	}
 
-	public void setSysUserService(SysUserService sysUserService) {
-		this.sysUserService = sysUserService;
-	}
-
 }

+ 41 - 5
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/PhoneAuthenticationProvider.java

@@ -1,8 +1,11 @@
 package com.ym.mec.auth.core.provider;
 
+import java.util.Date;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.InternalAuthenticationServiceException;
+import org.springframework.security.authentication.LockedException;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.AuthenticationException;
 import org.springframework.security.core.userdetails.UserDetails;
@@ -12,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import com.ym.mec.auth.api.dto.SysUserInfo;
 import com.ym.mec.auth.api.entity.LoginEntity;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.config.token.PhoneAuthenticationToken;
 import com.ym.mec.auth.service.SysUserService;
 import com.ym.mec.common.security.SecurityConstants;
@@ -35,7 +39,7 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	protected UserDetails retrieveUser(String phone, Authentication authentication) throws AuthenticationException {
+	protected UserDetails retrieveUser(String username, Authentication authentication) throws AuthenticationException {
 
 		LoginEntity loginEntity = (LoginEntity) authentication.getCredentials();
 		if (loginEntity == null) {
@@ -43,21 +47,53 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 		}
 
 		String smsCode = loginEntity.getSmsCode();
+		
+		String phone = StringUtils.substringAfter(username, SecurityConstants.PHONE_PRINCIPAL_PREFIX);
 
 		// 验证码验证
-		boolean b = smsCodeService.verifyValidCode(StringUtils.substringAfter(phone, SecurityConstants.PHONE_PRINCIPAL_PREFIX), smsCode);
+		boolean b = smsCodeService.verifyValidCode(phone, smsCode);
 		if (!b) {
 			throw new BadCredentialsException("验证码校验失败");
 		}
 
+		String clientId = loginEntity.getClientId();
+
+		Boolean isRegister = loginEntity.getIsRegister();
+
 		SysUserInfo userInfo = sysUserService.queryUserInfoByPhone(loginEntity.getPhone());
-		if (userInfo == null && StringUtils.isNotEmpty(loginEntity.getIsLessee())) {
-			sysUserService.initUser(loginEntity.getPhone(), loginEntity.getClientId(), loginEntity.getIsRegister(), loginEntity.getIsLessee());
+
+		if (userInfo == null) {
+			if (isRegister == false || StringUtils.equals("SYSTEM", clientId)) {
+				throw new LockedException("用户不存在");
+			}
+			sysUserService.initUser(loginEntity.getPhone(), clientId);
+		} else {
+			if (!userInfo.getSysUser().getUserType().contains(clientId)) {
+				if (isRegister == false || StringUtils.equals("SYSTEM", clientId)) {
+					throw new LockedException("用户不存在");
+				} else {
+					SysUser user = sysUserService.queryByPhone(phone);
+					if(user == null){
+						throw new LockedException("用户不存在");
+					}
+					user.setUserType(user.getUserType()+","+clientId);
+					user.setUpdateTime(new Date());
+					
+					// 添加userType以及附加信息
+					if (StringUtils.equals("STUDENT", clientId)) {
+						user.setOrganId(sysUserService.getLesseeOrganId());
+						sysUserService.saveStudent(user.getId());
+					} else if (StringUtils.equals("TEACHER", clientId)) {
+						sysUserService.saveTeacher(user.getId());
+					}
+					sysUserService.update(user);
+				}
+			}
 		}
 
 		UserDetails loadedUser;
 		try {
-			loadedUser = userDetailsService.loadUserByUsername(phone);
+			loadedUser = userDetailsService.loadUserByUsername(username);
 		} catch (UsernameNotFoundException e) {
 			throw e;
 		} catch (Exception e) {

+ 9 - 9
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java

@@ -4,7 +4,6 @@ import com.ym.mec.auth.api.dto.SysUserInfo;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.service.BaseService;
-import org.springframework.security.core.Authentication;
 
 public interface SysUserService extends BaseService<Integer, SysUser> {
 
@@ -97,14 +96,7 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
 	 * @param clientId
 	 * @return
 	 */
-	SysUserInfo initUser(String phone,String clientId,String isRegister,String isLessee);
-
-	/**
-	 * 获取老师的分部编号
-	 * @param phone
-	 * @return
-	 */
-	void retrieveUser(String phone, Authentication authentication);
+	SysUserInfo initUser(String phone,String clientId);
 
 	/**
 	 * 刷新token
@@ -117,4 +109,12 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
 	 * @param userId
 	 */
 	void saveStudent(Integer userId);
+	
+	/**
+	 * 保存teacher数据
+	 * @param userId
+	 */
+	void saveTeacher(Integer userId);
+	
+	Integer getLesseeOrganId();
 }

+ 45 - 67
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -1,7 +1,15 @@
 package com.ym.mec.auth.service.impl;
 
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.ym.mec.auth.api.dto.SysUserInfo;
-import com.ym.mec.auth.api.entity.LoginEntity;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.auth.dal.dao.SysUserDao;
@@ -16,18 +24,6 @@ import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.im.WebFeignService;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.authentication.BadCredentialsException;
-import org.springframework.security.authentication.LockedException;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.Date;
-import java.util.List;
 
 @Service
 public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implements SysUserService {
@@ -49,8 +45,6 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 	@Autowired
 	private IdGeneratorService smsCodeService;
 
-	@Value("${message.autoRegister}")
-	private boolean autoRegister;
 	@Value("${auth.sysconfig.tenantId}")
 	private Integer lesseeOrganId;
 
@@ -155,59 +149,33 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public SysUserInfo initUser(String phone, String clientId,String isRegister,String isLessee) {
-		if("register".equals(isRegister)){
-			throw new UsernameNotFoundException("404.9");
-		}
-		if(StringUtils.isNotEmpty(isLessee) || autoRegister){
-			if(StringUtils.isNotEmpty(isLessee) && StringUtils.equalsIgnoreCase(clientId,"TEACHER")){
-				SysUser sysUser = new SysUser();
-				sysUser.setPhone(phone);
-				sysUser.setUserType("TEACHER");
-				sysUserDao.insert(sysUser);
-				//添加用户现金账户
-				imFeignService.register(new ImUserModel(sysUser.getId().toString(),phone,null));
-				userFeignService.createCashAccount(sysUser.getId());
-				//sysTenantAccount
-				sysUserDao.insertSysTenantAccount(sysUser.getId());
-				//创建teacher表
-				sysUserDao.insertTeacher(sysUser.getId(),lesseeOrganId);
-				return queryUserInfoByPhone(phone);
-			}else if(StringUtils.isNotEmpty(isLessee) && StringUtils.equalsIgnoreCase(clientId,"STUDENT")){
-				SysUser sysUser = new SysUser();
-				sysUser.setPhone(phone);
-				sysUser.setUserType("STUDENT");
-				sysUser.setOrganId(lesseeOrganId);
-				sysUserDao.insert(sysUser);
-				sysUserService.saveStudent(sysUser.getId());
-				//添加用户现金账户
-				imFeignService.register(new ImUserModel(sysUser.getId().toString(),phone,null));
-				userFeignService.createCashAccount(sysUser.getId());
-				return queryUserInfoByPhone(phone);
-			}
+	public SysUserInfo initUser(String phone, String clientId) {
+		if(StringUtils.equalsIgnoreCase(clientId,"TEACHER")){
+			SysUser sysUser = new SysUser();
+			sysUser.setPhone(phone);
+			sysUser.setUserType("TEACHER");
+			sysUserDao.insert(sysUser);
+			//添加用户现金账户
+			imFeignService.register(new ImUserModel(sysUser.getId().toString(),phone,null));
+			userFeignService.createCashAccount(sysUser.getId());
+			//sysTenantAccount
+			sysUserDao.insertSysTenantAccount(sysUser.getId());
+			//创建teacher表
+			sysUserDao.insertTeacher(sysUser.getId(),lesseeOrganId);
+			return queryUserInfoByPhone(phone);
+		}else if(StringUtils.equalsIgnoreCase(clientId,"STUDENT")){
+			SysUser sysUser = new SysUser();
+			sysUser.setPhone(phone);
+			sysUser.setUserType("STUDENT");
+			sysUser.setOrganId(lesseeOrganId);
+			sysUserDao.insert(sysUser);
+			sysUserService.saveStudent(sysUser.getId());
+			//添加用户现金账户
+			imFeignService.register(new ImUserModel(sysUser.getId().toString(),phone,null));
+			userFeignService.createCashAccount(sysUser.getId());
+			return queryUserInfoByPhone(phone);
 		}
-		throw new UsernameNotFoundException("404.9");
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void retrieveUser(String phone, Authentication authentication) {
-		LoginEntity loginEntity = (LoginEntity) authentication.getCredentials();
-		SysUserInfo userInfo = sysUserService.queryUserInfoByPhone(loginEntity.getPhone());
-		if (userInfo == null) {
-			userInfo = sysUserService.initUser(loginEntity.getPhone(),loginEntity.getClientId(),loginEntity.getIsRegister(),loginEntity.getIsLessee());
-		}else if(StringUtils.isNotEmpty(loginEntity.getIsLessee())){
-			throw new LockedException("用户已存在");
-		}
-		if("EDUCATION".equals(loginEntity.getClientId())){
-			loginEntity.setClientId("SYSTEM");
-		}
-		if (!userInfo.getSysUser().getUserType().contains(loginEntity.getClientId())) {
-			throw new LockedException("用户不存在,请联系教务老师");
-		}
-//			 验证码验证
-		boolean b = smsCodeService.verifyValidCode(loginEntity.getPhone(), loginEntity.getSmsCode());
-		if(!b) throw new BadCredentialsException("验证码校验失败");
+		return null;
 	}
 
 	@Override
@@ -221,4 +189,14 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		sysUserDao.saveStudent(userId);
 	}
 
+	@Override
+	public void saveTeacher(Integer userId) {
+		sysUserDao.insertTeacher(userId, lesseeOrganId);
+	}
+
+	@Override
+	public Integer getLesseeOrganId() {
+		return lesseeOrganId;
+	}
+
 }

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -301,6 +301,14 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
     List<Map<Integer, String>> queryMidiByUserIdsAndCourseId(@Param("userIds") Set<String> userIds, @Param("courseScheduleId") String courseScheduleId);
 
     /**
+     * 获取用户的节拍器信息
+     * @param userIds
+     * @param courseScheduleId
+     * @return
+     */
+    List<Map<Integer, Integer>> queryExamSongByUserIdsAndCourseId(@Param("userIds") Set<String> userIds, @Param("courseScheduleId") String courseScheduleId);
+
+    /**
      * 获取单个用户的midi
      * @param courseScheduleId
      * @param userId
@@ -352,5 +360,23 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
     List<Map<Integer, Date>> findStudentLastCourseSchedule(@Param("studentIds") List<Integer> StudentIds);
 
     List<CourseScheduleStudentPayment> queryAll(Map<String, Object> params);
+
     int countAll(Map<String, Object> params);
+
+    /**
+     * 修改学员曲目下载状态
+     * @author zouxuan
+     * @param roomId
+     */
+    void adjustExamSong(@Param("roomId") Long roomId, @Param("userId") Integer userId, @Param("status") Integer status);
+
+    /**
+     * 获取学员的曲目下载状态
+     * @author zouxuan
+     * @param roomId
+     * @param userId
+     * @return
+     */
+    Boolean getExamSongDownloadStatus(@Param("roomId") Long roomId,
+                                      @Param("userId") String userId);
 }

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

@@ -14,6 +14,8 @@ import java.util.List;
 import java.util.Map;
 
 public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Student> {
+	
+	Student getLocked(Integer userId);
 
     int lockUser(@Param("userId") Integer userId);
 

+ 0 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysExamSongDao.java

@@ -6,5 +6,4 @@ import com.ym.mec.common.dal.BaseDAO;
 
 public interface SysExamSongDao extends BaseDAO<Integer, SysExamSong> {
 
-	
 }

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

@@ -496,8 +496,6 @@ public class StudentManageServiceImpl implements StudentManageService {
             student.setUpdateTime(date);
             student.setCreateTime(date);
             student.setUserType("STUDENT");
-            student.setServiceTag(1);
-            student.setOperatingTag(1);
             HttpResponseResult<Integer> result = sysUserFeignService.addUser(student);
             student.setId(result.getData());
 

+ 71 - 71
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1,5 +1,27 @@
 package com.ym.mec.biz.service.impl;
 
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
@@ -23,6 +45,7 @@ import com.ym.mec.im.ImFeignService;
 import com.ym.mec.thirdparty.eseal.ESealPlugin;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -223,81 +246,58 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Override
     @Transactional(rollbackFor = Exception.class)
     public StudentRegistration addStudent(StudentRegistration studentRegistration) throws Exception {
-        String key = "_student_registration";
-        long threadId = Thread.currentThread().getId();
-        if (!redisCache.getLocked(key, threadId, 10)) {
-            throw new BizException("系统繁忙,请稍后再试");
+    	Integer userId = studentRegistration.getUserId();
+
+    	Student student = studentDao.getLocked(userId);
+    	if (student == null) {
+        	throw new BizException("查询学生信息失败");
         }
-        try {
-            Date date = new Date();
-            Integer userId = 0;
-            SysUser sysUser = studentRegistrationDao.getSysUserByPhone(studentRegistration.getParentsPhone());
-            if (sysUser == null) {
-                sysUser = new SysUser();
-                sysUser.setPhone(studentRegistration.getParentsPhone());
-                sysUser.setCreateTime(date);
-                sysUser.setUpdateTime(date);
-                sysUser.setLockFlag(0);
-                sysUser.setDelFlag(com.ym.mec.auth.api.enums.YesOrNoEnum.NO);
-                sysUser.setUserType("STUDENT");
-                sysUser.setGender(studentRegistration.getGender());
-                sysUser.setOrganId(studentRegistration.getOrganId());
-                sysUser.setRealName(studentRegistration.getParentsName());
-                sysUser.setUsername(studentRegistration.getName());
-                sysUser.setIdCardNo(studentRegistration.getIdCardNo());
-                sysUser.setBirthdate(studentRegistration.getBirthdate());
-                teacherDao.addSysUser(sysUser);
-                userId = sysUser.getId();
-                // 添加用户现金账户
-                sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
-                // 注册到融云
-                if (StringUtils.isEmpty(sysUser.getAvatar())) {
-                    sysUser.setAvatar(sysConfigDao.findConfigValue(SysConfigService.USER_DEFAULT_HEAD_URL));
-                }
-                ImResult register = imFeignService.register(new ImUserModel(userId.toString(), sysUser.getUsername(), sysUser.getAvatar()));
-                sysUser.setImToken(register.getToken());
-            } else {
-                if (StringUtils.isNotEmpty(sysUser.getUsername())) {
-                    if (!sysUser.getUsername().equals(studentRegistration.getName())) {
-                        throw new BizException("操作失败:账户已被注册");
-                    }
-                }
-                if (!sysUser.getUserType().contains("STUDENT")) {
-                    sysUser.setUserType(sysUser.getUserType() + ",STUDENT");
-                }
-                sysUser.setPhone(studentRegistration.getParentsPhone());
-                sysUser.setOrganId(studentRegistration.getOrganId());
-                sysUser.setRealName(studentRegistration.getParentsName());
 
-                sysUser.setUsername(studentRegistration.getName());
-                sysUser.setGender(studentRegistration.getGender());
-                sysUser.setBirthdate(studentRegistration.getBirthdate());
-                sysUser.setCreateTime(date);
-                sysUser.setUpdateTime(date);
-                teacherDao.updateUser(sysUser);
-            }
+        StudentRegistration hasReg = getByPhoneAndMusicGroupId(studentRegistration.getMusicGroupId(), studentRegistration.getParentsPhone());
+        if (hasReg != null) {
+        	throw new BizException("该乐团您已报名");
+        }
 
-            studentRegistration.setActualSubjectId(studentRegistration.getSubjectId());
-            studentRegistration.setCreateTime(date);
-            studentRegistration.setUpdateTime(date);
-            studentRegistration.setUserId(sysUser.getId());
-            studentRegistrationDao.insert(studentRegistration);
-            studentRegistrationDao.updateCurrentClass(studentRegistration);
-            // 增加报名学生数
-            musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId(), 1);
-            // 报名成功后,发送短信
-            // String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + studentRegistration.getMusicGroupId();
-            String serverPhone = sysConfigDao.findConfigValue(SysConfigService.SERVER_PHONE);
-            Subject subject = subjectDao.get(studentRegistration.getActualSubjectId());
-            // MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
-
-            Map<Integer, String> map = new HashMap<>(1);
-            map.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_APPLY_MESSAGE, map, null, 0, "", "",
-                    studentRegistration.getParentsName(), subject.getName(), serverPhone);
-        } finally {
-            redisCache.releaseLocked(key, threadId);
+        Date date = new Date();
+        SysUser sysUser = sysUserFeignService.queryUserByMobile(studentRegistration.getParentsPhone());
+        if (sysUser == null) {
+            throw new BizException("用户信息查询失败");
         }
+
+        if (!sysUser.getUserType().contains("STUDENT")) {
+            sysUser.setUserType(sysUser.getUserType() + ",STUDENT");
+        }
+        sysUser.setPhone(studentRegistration.getParentsPhone());
+        sysUser.setOrganId(studentRegistration.getOrganId());
+        sysUser.setRealName(studentRegistration.getParentsName());
+
+        sysUser.setUsername(studentRegistration.getName());
+        sysUser.setGender(studentRegistration.getGender());
+        sysUser.setBirthdate(studentRegistration.getBirthdate());
+        sysUser.setCreateTime(date);
+        sysUser.setUpdateTime(date);
+        teacherDao.updateUser(sysUser);
+
+        studentRegistration.setActualSubjectId(studentRegistration.getSubjectId());
+        studentRegistration.setCreateTime(date);
+        studentRegistration.setUpdateTime(date);
+        studentRegistration.setUserId(sysUser.getId());
+        studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.APPLY);
+        studentRegistrationDao.insert(studentRegistration);
+
+        // 增加报名学生数
+        musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId(), 1);
+        // 报名成功后,发送短信
+        // String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + studentRegistration.getMusicGroupId();
+        String serverPhone = sysConfigDao.findConfigValue(SysConfigService.SERVER_PHONE);
+        Subject subject = subjectDao.get(studentRegistration.getActualSubjectId());
+        // MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
+
+        Map<Integer, String> map = new HashMap<>(1);
+        map.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
+        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_APPLY_MESSAGE, map, null, 0, "", "",
+                studentRegistration.getParentsName(), subject.getName(), serverPhone);
+
         return studentRegistration;
     }
 

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

@@ -161,8 +161,28 @@
 			</if>
 		</where>
 	</update>
+	<update id="adjustExamSong">
+		UPDATE course_schedule_student_payment
+		<set>
+			<if test="status != null">
+				exam_song_download_status_ = #{status}
+			</if>
+		</set>
+		WHERE course_schedule_id_ = #{roomId}
+		<if test="userId != null">
+			AND user_id_ = #{userId}
+		</if>
+	</update>
+	<select id="getExamSongDownloadStatus" resultType="boolean">
+		SELECT CASE WHEN exam_song_download_status_ IS NULL THEN 0 ELSE exam_song_download_status_ END
+		FROM course_schedule_student_payment
+		WHERE course_schedule_id_ = #{roomId}
+		<if test="userId != null">
+			AND user_id_ = #{userId}
+		</if>
+	</select>
 
-    <!-- 根据主键删除一条记录 -->
+	<!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
 		DELETE FROM course_schedule_student_payment WHERE id_ = #{id}
 	</delete>
@@ -476,6 +496,14 @@
 		</foreach>
 		AND cssp.course_schedule_id_ = #{courseScheduleId}
 	</select>
+	<select id="queryExamSongByUserIdsAndCourseId" resultType="java.util.Map">
+		SELECT user_id_ 'key',CASE WHEN exam_song_download_status_ IS NULL THEN 0 ELSE exam_song_download_status_ END 'value' FROM course_schedule_student_payment
+		WHERE user_id_ IN
+		<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+			#{userId}
+		</foreach>
+		AND course_schedule_id_ = #{courseScheduleId}
+	</select>
 	<select id="getMidiByCourseIdAndUserId" resultType="java.lang.String">
 		SELECT cssp.open_play_midi_ FROM course_schedule_student_payment cssp
 		WHERE cssp.user_id_ = #{userId} AND cssp.course_schedule_id_ = #{courseScheduleId}

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

@@ -24,6 +24,12 @@
         FROM student
         WHERE user_id_ = #{id}
     </select>
+    
+    <select id="getLocked" resultMap="Student">
+        SELECT *
+        FROM student
+        WHERE user_id_ = #{id} for update
+    </select>
 
     <!-- 全查询 -->
     <select id="findAll" resultMap="Student">

+ 12 - 9
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -13,9 +13,6 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-/**
- * Created by weiqinxiao on 2019/2/25.
- */
 @RestController
 @RequestMapping("/room")
 @Slf4j
@@ -51,11 +48,6 @@ public class RoomController{
         return new BaseResponse<>();
     }
 
-    @RequestMapping(value = "/leaveRoomSuccess")
-    public void leaveRoomSuccess() throws Exception {
-        roomService.leaveRoomSuccess("S1560287", "100136");
-    }
-
     @RequestMapping(value = "/statusSync")
     public void statusSync(@RequestBody String body) throws Exception {
         ChannelStateNotify notify = JSONObject.parseObject(body, ChannelStateNotify.class);
@@ -72,7 +64,6 @@ public class RoomController{
                 roomService.leaveRoomSuccess(roomId, userId);
                 break;
         }
-//        roomService.statusSync(notify);
     }
 
     @RequestMapping(value = "/downgrade", method = RequestMethod.POST)
@@ -153,6 +144,18 @@ public class RoomController{
         return new BaseResponse<>(result);
     }
 
+    @RequestMapping(value = "pushDownloadExamSongMsg", method = RequestMethod.POST)
+    public Object pushDownloadExamSongMsg(Long roomId,Integer examSongId) throws Exception {
+        roomService.pushDownloadExamSongMsg(roomId,examSongId);
+        return new BaseResponse<>();
+    }
+
+    @RequestMapping(value = "adjustExamSong", method = RequestMethod.POST)
+    public Object adjustExamSong(Long roomId,Integer status) throws Exception {
+        roomService.adjustExamSong(roomId,status);
+        return new BaseResponse<>();
+    }
+
     @RequestMapping(value = "/device/batchControl", method = RequestMethod.POST)
     public Object batchControlDevice(@RequestBody ReqDeviceControlData data)throws Exception {
         log.info("batchControl: {}",JSONObject.toJSON(data));

+ 42 - 0
mec-im/src/main/java/com/ym/mec/im/message/ExamSongDownloadMessageMessage.java

@@ -0,0 +1,42 @@
+package com.ym.mec.im.message;
+
+import com.ym.mec.im.BaseMessage;
+
+public class ExamSongDownloadMessageMessage extends BaseMessage {
+    private String url;
+    private String songName;
+    private static final transient String TYPE = "DY:examSongDownloadMessage";
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getSongName() {
+        return songName;
+    }
+
+    public void setSongName(String songName) {
+        this.songName = songName;
+    }
+
+    public static String getTYPE() {
+        return TYPE;
+    }
+
+    @Override
+    public String toString() {
+        return "{" +
+                "url='" + url + '\'' +
+                ", songName='" + songName + '\'' +
+                '}';
+    }
+
+    @Override
+    public String getObjectName() {
+        return TYPE;
+    }
+}

+ 0 - 3
mec-im/src/main/java/com/ym/mec/im/message/MetronomeMessageMessage.java

@@ -4,9 +4,6 @@ import com.ym.mec.im.BaseMessage;
 import com.ym.pojo.CustomMessage;
 import org.apache.commons.lang3.StringUtils;
 
-/**
- * Created by weiqinxiao on 2019/3/6.
- */
 public class MetronomeMessageMessage extends BaseMessage {
     private CustomMessage content;
     private static final transient String TYPE = "DY:PlayMidiMessage";

+ 1 - 0
mec-im/src/main/java/com/ym/pojo/DeviceTypeEnum.java

@@ -8,5 +8,6 @@ public enum DeviceTypeEnum {
     Camera,
     MusicMode,
     HandUp,
+    ExamSong,
     PlayMidi,
 }

+ 41 - 0
mec-im/src/main/java/com/ym/pojo/ExamSongDownloadData.java

@@ -0,0 +1,41 @@
+package com.ym.pojo;
+
+import lombok.Data;
+
+@Data
+public class ExamSongDownloadData {
+	private Boolean examSongDownloadOn;
+	private String roomId;
+	private String userId;
+	private String ticket;
+
+	public Boolean getExamSongDownloadOn() {
+		return examSongDownloadOn;
+	}
+
+	public void setExamSongDownloadOn(Boolean examSongDownloadOn) {
+		this.examSongDownloadOn = examSongDownloadOn;
+	}
+
+	public String getRoomId() {
+		return roomId;
+	}
+	public void setRoomId(String roomId) {
+		this.roomId = roomId;
+	}
+	public String getUserId() {
+		return userId;
+	}
+	public void setUserId(String userId) {
+		this.userId = userId;
+	}
+	public String getTicket() {
+		return ticket;
+	}
+	public void setTicket(String ticket) {
+		this.ticket = ticket;
+	}
+
+
+
+}

+ 0 - 3
mec-im/src/main/java/com/ym/pojo/PlayMidiMessageData.java

@@ -2,9 +2,6 @@ package com.ym.pojo;
 
 import lombok.Data;
 
-/**
- * Created by weiqinxiao on 2019/3/1.
- */
 @Data
 public class PlayMidiMessageData {
 	private String content;

+ 3 - 1
mec-im/src/main/java/com/ym/pojo/RoomResult.java

@@ -34,6 +34,7 @@ public class RoomResult {
         boolean camera;
         boolean microphone;
         boolean handUpOn;
+        boolean examSongDownloadOn;
         CustomMessage playMidiJson;
     }
 
@@ -44,7 +45,7 @@ public class RoomResult {
         int curPg;
     }
 
-    public void setMembers(List<RoomMember> roomMemberList, Map<Integer,String> midiMap) {
+    public void setMembers(List<RoomMember> roomMemberList, Map<Integer,String> midiMap,Map<Integer,String> examSongMap) {
         for (RoomMember member : roomMemberList) {
             MemberResult result = new MemberResult();
             result.setUserId(member.getUid());
@@ -56,6 +57,7 @@ public class RoomResult {
             result.setHandUpOn(member.isHand());
             result.setHeadUrl(member.getHeadUrl());
             result.setPlayMidiJson(JSONObject.parseObject(midiMap.get(Integer.parseInt(member.getUid())),CustomMessage.class));
+            result.setExamSongDownloadOn(examSongMap.get(member.getRid())=="0"?false:true);
             members.add(result);
         }
     }

+ 41 - 6
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -13,12 +13,10 @@ import com.ym.dao.WhiteboardDao;
 import com.ym.job.ScheduleManager;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.RongyunBasicUserDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.SysExamSong;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.TeachModeEnum;
@@ -89,6 +87,8 @@ public class RoomServiceImpl implements RoomService {
     @Autowired
     private SysUserFeignService sysUserFeignService;
     @Autowired
+    private SysExamSongDao sysExamSongDao;
+    @Autowired
     private SysConfigDao sysConfigDao;
     @Autowired
     private RedisTemplate<String,String> redisTemplate;
@@ -200,6 +200,8 @@ public class RoomServiceImpl implements RoomService {
         } else if (roleEnum == RoleEnum.RoleAssistant && display.isEmpty()) {
             display = "display://type=0?userId=" + userId + "?uri=";
         }else {
+            //获取学员曲目下载状态
+            userResult.setExamSongDownloadOn(courseScheduleStudentPaymentDao.getExamSongDownloadStatus(courseId,userId));
             Room room = roomDao.findByRid(roomId);
             if (room != null) {
                 display = room.getDisplay();
@@ -226,7 +228,8 @@ public class RoomServiceImpl implements RoomService {
         if(roomMemberList != null && roomMemberList.size() > 0){
             Set<String> userIds = roomMemberList.stream().map(e -> e.getUid()).collect(Collectors.toSet());
             Map<Integer,String> midiMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.queryMidiByUserIdsAndCourseId(userIds,courseId.toString()));
-            roomResult.setMembers(roomMemberList,midiMap);
+            Map<Integer,String> examSongMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.queryExamSongByUserIdsAndCourseId(userIds,courseId.toString()));
+            roomResult.setMembers(roomMemberList,midiMap,examSongMap);
         }
         roomResult.setWhiteboards(whiteboardDao.findByRid(roomId));
         log.info("join room: roomId = {}, userId = {}, userName={}, role = {}", roomId, userId, userName, roleEnum);
@@ -850,7 +853,8 @@ public class RoomServiceImpl implements RoomService {
             RoomResult roomResult = new RoomResult();
             Set<String> userIds = roomMemberList.stream().map(e -> e.getUid()).collect(Collectors.toSet());
             Map<Integer,String> midiMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.queryMidiByUserIdsAndCourseId(userIds,roomId.substring(1)));
-            roomResult.setMembers(roomMemberList,midiMap);
+            Map<Integer,String> examSongMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.queryExamSongByUserIdsAndCourseId(userIds,roomId.substring(1)));
+            roomResult.setMembers(roomMemberList,midiMap,examSongMap);
             return roomResult.getMembers();
         }
         return null;
@@ -1273,6 +1277,37 @@ public class RoomServiceImpl implements RoomService {
         return courseScheduleStudentPaymentDao.queryNoJoinStu(roomId,roomId.substring(1));
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void pushDownloadExamSongMsg(Long roomId, Integer examSongId) throws Exception {
+        SysUser authUser = sysUserFeignService.queryUserInfo();
+        ExamSongDownloadMessageMessage msg = new ExamSongDownloadMessageMessage();
+        SysExamSong sysExamSong = sysExamSongDao.get(examSongId);
+        if(sysExamSong == null){
+            throw new BizException("曲目信息不存在");
+        }
+        msg.setSongName(sysExamSong.getName());
+        msg.setUrl(sysExamSong.getUrl());
+        imHelper.publishMessage(authUser.getId().toString(), roomId.toString(), msg, 1);
+        //学员曲目下载状态改为未下载
+        courseScheduleStudentPaymentDao.adjustExamSong(roomId,null,0);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void adjustExamSong(Long roomId, Integer status) throws Exception {
+        if(roomId == null || status == null){
+            throw new BizException("参数校验失败");
+        }
+        SysUser authUser = sysUserFeignService.queryUserInfo();
+        CourseSchedule courseSchedule = courseScheduleDao.get(roomId);
+        courseScheduleStudentPaymentDao.adjustExamSong(roomId,authUser.getId(),status);
+        //给老师发送学员曲目下载状态
+        DeviceStateChangedMessage deviceResourceMessage = new DeviceStateChangedMessage(DeviceTypeEnum.ExamSong.ordinal(), status==0?false:true);
+        deviceResourceMessage.setUserId(courseSchedule.getActualTeacherId().toString());
+        imHelper.publishMessage(authUser.getId().toString(), roomId.toString(), deviceResourceMessage, 1);
+    }
+
     public void updateDisplay(String roomId, String senderId, String display, Integer isIncludeSender) throws Exception {
         roomDao.updateDisplayByRid(roomId, display);
         DisplayMessage displayMessage = new DisplayMessage(display);

+ 17 - 1
mec-im/src/main/java/com/ym/service/RoomService.java

@@ -2,6 +2,7 @@ package com.ym.service;
 
 import com.ym.mec.biz.dal.dto.RongyunBasicUserDto;
 import com.ym.pojo.*;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -51,7 +52,6 @@ public interface RoomService {
 
     Boolean rejectSpeech(String roomId, String requestId) throws  Exception;
 
-
     Boolean transfer(String roomId, String userId) throws Exception;
 
     Boolean inviteUpgradeRole(String roomId, String userId, int role) throws  Exception;
@@ -77,4 +77,20 @@ public interface RoomService {
      * @return
      */
     List<RongyunBasicUserDto> queryNoJoinStu(String roomId);
+
+    /**
+     * 推送学员开始下载伴奏的通知
+     * @author zouxuan
+     * @param roomId
+     * @param examSongId
+     */
+    void pushDownloadExamSongMsg(Long roomId, Integer examSongId) throws Exception;
+
+    /**
+     * 修改学员伴奏下载状态
+     * @author zouxuan
+     * @param roomId
+     * @param status
+     */
+    void adjustExamSong(Long roomId,Integer status) throws Exception;
 }

+ 22 - 8
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupRegisterController.java

@@ -1,5 +1,7 @@
 package com.ym.mec.student.controller;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
@@ -10,10 +12,12 @@ import com.ym.mec.biz.service.StudentRegistrationService;
 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.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -31,33 +35,43 @@ public class MusicGroupRegisterController extends BaseController {
     private MusicGroupSubjectPlanService musicGroupSubjectPlanService;
     @Autowired
     private MusicGroupService musicGroupService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
 
 
     @ApiOperation(value = "新增学生报名信息")
     @PostMapping("/add")
     public HttpResponseResult add(@RequestBody StudentRegistration studentRegistration) throws Exception {
+    	
+    	SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        
         Date date = new Date();
         MusicGroup musicGroup = musicGroupService.get(studentRegistration.getMusicGroupId());
         if (musicGroup == null) {
             return failed("乐团信息不存在");
         }
-        if(studentRegistration.getId() != null){
-            return  succeed(studentRegistrationService.updateStudent(studentRegistration));
-        }
-
-        StudentRegistration hasReg = studentRegistrationService.getByPhoneAndMusicGroupId(studentRegistration.getMusicGroupId(), studentRegistration.getParentsPhone());
-        if (hasReg != null) {
-            return failed("该乐团您已报名");
-        }
+        
         if (DateUtil.daysBetween(musicGroup.getApplyExpireDate(),date) > 1) {
             return failed("乐团已截止报名");
         }
+        
+        if(studentRegistration.getId() != null){
+            return  succeed(studentRegistrationService.updateStudent(studentRegistration));
+        }
 
         if (musicGroup.getStatus().equals(MusicGroupStatusEnum.PAY)) {
             studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);
         }else{
             studentRegistration.setPaymentStatus(PaymentStatusEnum.NO);
         }
+        
+        if(studentRegistration.getUserId() == null){
+        	studentRegistration.setUserId(sysUser.getId());
+        }
+        
         studentRegistration.setOrganId(musicGroup.getOrganId());
         return succeed(studentRegistrationService.addStudent(studentRegistration));
     }