Bläddra i källkod

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

chengpeng 5 år sedan
förälder
incheckning
60cce0b5f2
40 ändrade filer med 817 tillägg och 114 borttagningar
  1. 1 1
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/SysUserFeignService.java
  2. 3 2
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/PhoneLoginAuthenticationFilter.java
  3. 3 2
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/UsernameAuthenticationFilter.java
  4. 17 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  5. 54 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/DemoGroupDao.java
  6. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  7. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/BasicUserDto.java
  8. 5 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java
  9. 10 10
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EmployeeDto.java
  10. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicCardDto.java
  11. 87 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentDemoGroupListDto.java
  12. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentDemoGroupQueryInfo.java
  13. 9 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  14. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/service/DemoGroupService.java
  15. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  16. 14 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  17. 56 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java
  18. 4 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  19. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  20. 17 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  21. 88 0
      mec-biz/src/main/resources/config/mybatis/DemoGroupMapper.xml
  22. 10 9
      mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  23. 17 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  24. 4 3
      mec-client-api/src/main/java/com/ym/im/ImFeignService.java
  25. 12 25
      mec-common/common-core/src/main/java/com/ym/mec/common/config/FeignConfiguration.java
  26. 128 0
      mec-common/common-core/src/main/java/com/ym/mec/common/config/RequestAttributeHystrixConcurrencyStrategy.java
  27. 33 0
      mec-common/common-core/src/main/java/com/ym/mec/common/config/RequestHeaderConfiguration.java
  28. 10 0
      mec-education/pom.xml
  29. 3 1
      mec-education/src/main/java/com/ym/mec/education/EducationApplication.java
  30. 14 15
      mec-education/src/main/java/com/ym/mec/education/config/ResourceServerConfig.java
  31. 2 5
      mec-education/src/main/java/com/ym/mec/education/config/WebMvcConfig.java
  32. 3 1
      mec-education/src/main/java/com/ym/mec/education/controller/MusicGroupController.java
  33. 19 7
      mec-student/src/main/java/com/ym/mec/student/controller/CourseController.java
  34. 12 3
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  35. 37 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentDemoGroupController.java
  36. 5 1
      mec-student/src/main/resources/application.yml
  37. 0 14
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java
  38. 1 0
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java
  39. 16 0
      mec-web/src/test/java/com/ym/Test.java
  40. 6 0
      pom.xml

+ 1 - 1
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/SysUserFeignService.java

@@ -10,7 +10,7 @@ import com.ym.mec.auth.api.dto.SysUserInfo;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.common.config.FeignConfiguration;
 
-@FeignClient(name = "auth-server", configuration = FeignConfiguration.class, fallback = SysUserFeignServiceFallback.class)
+@FeignClient(name = "auth-server", configuration = { FeignConfiguration.class }, fallback = SysUserFeignServiceFallback.class)
 public interface SysUserFeignService {
 
 	@GetMapping(value = "query/{username}")

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

@@ -18,6 +18,7 @@ import org.springframework.security.web.authentication.AbstractAuthenticationPro
 import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
 
 import com.ym.mec.auth.api.dto.SysUserInfo;
+import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.config.constant.SecurityConstants;
 import com.ym.mec.auth.config.token.PhoneAuthenticationToken;
 import com.ym.mec.auth.service.SysUserService;
@@ -59,8 +60,8 @@ public class PhoneLoginAuthenticationFilter extends AbstractAuthenticationProces
 			throw new UsernameNotFoundException("用户名或密码错误");
 		}
 	
-		if (!StringUtils.equalsIgnoreCase(clientId, userInfo.getSysUser().getUserType().getCode())) {
-			throw new LockedException("用户名或密码错误");
+		if (userInfo.getSysUser().getUserType() != SysUserType.SYSTEM && !StringUtils.equalsIgnoreCase(clientId, userInfo.getSysUser().getUserType().getCode())) {
+			throw new LockedException("登录失败");
 		}
 
 		principal = principal.trim();

+ 3 - 2
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/UsernameAuthenticationFilter.java

@@ -19,6 +19,7 @@ import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
 import org.springframework.util.Assert;
 
 import com.ym.mec.auth.api.dto.SysUserInfo;
+import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.config.constant.SecurityConstants;
 import com.ym.mec.auth.service.SysUserService;
 
@@ -70,8 +71,8 @@ public class UsernameAuthenticationFilter extends AbstractAuthenticationProcessi
 			throw new UsernameNotFoundException("用户名或密码错误");
 		}
 	
-		if (!StringUtils.equalsIgnoreCase(clientId, userInfo.getSysUser().getUserType().getCode())) {
-			throw new LockedException("用户名或密码错误");
+		if (userInfo.getSysUser().getUserType() != SysUserType.SYSTEM && !StringUtils.equalsIgnoreCase(clientId, userInfo.getSysUser().getUserType().getCode())) {
+			throw new LockedException("登录失败");
 		}
 
 		UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(SecurityConstants.USERNAME_PRINCIPAL_PREFIX + username,

+ 17 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.dto.TeacherVipClassInfoDto;
 import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.common.dal.BaseDAO;
 
+import com.ym.mec.common.entity.ImGroupModel;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -91,12 +92,26 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @param musicGroupId
      * @return
      */
-    List<ClassGroupTeachers> findClassGroupByMusicGroupId(@Param("musicGroupId") int musicGroupId);
+    List<ClassGroupTeachers> findClassGroupByMusicGroupId(@Param("musicGroupId") Integer musicGroupId);
 
     /**
      * 获取学生所购买课程列表
      * @param userId
      * @return
      */
-    List<CourseListDto> queryCoursePage(int userId);
+    List<CourseListDto> queryCoursePage(Integer userId);
+
+    /**
+     * 获取学员所在群组信息
+     * @param userId
+     * @return
+     */
+    List<ImGroupModel> queryUserGroups(Integer userId);
+
+    /**
+     * 获取vip课的学生名称列表
+     * @param musicGroupId
+     * @return
+     */
+    List<String> findVipStuNames(String musicGroupId);
 }

+ 54 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/DemoGroupDao.java

@@ -1,9 +1,63 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.StudentDemoGroupListDto;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.DemoGroup;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
 
 public interface DemoGroupDao extends BaseDAO<Long, DemoGroup> {
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/25
+     * 根据试听课ID获取班级中学生的分部ID列表
+     */
+    List<Integer> organIdListByDemoGroupId(Long demoGroupId);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/25
+     * 根据用户ID获取所在部门ID
+     */
+    Integer getOrganIdByUserId(Long userId);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/25
+     * 根据试听课信息构造课程计划
+     */
+    List<CourseSchedule> createCourseScheduleByDemoGroup(@Param("demoGroup") DemoGroup demoGroup);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/25
+     * 统计乐团已报名人数
+     */
+    Integer countDemoGroupStudents(Long demoGroupId);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/25
+     * 试听课列表获取
+     */
+    List<StudentDemoGroupListDto> findDemoGroupList(Map<String,Object> params);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/25
+     * 统计试听课
+     */
+    Integer countDemoGroupList(Map<String,Object> params);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/25
+     * 根据试听课ID获取关联班级ID
+     */
+    Integer findClassGroupIDByDemoGroupId(Long demoGroupId);
 	
 }

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

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
@@ -38,4 +40,11 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     Integer countCourseByType(@Param("userId") Integer userId, @Param("type") ClassGroupTypeEnum type);
+
+    /**
+     * 根绝学员编号获取相关老师列表
+     * @param studentId
+     * @return
+     */
+    List<BasicUserDto> findTeachersByStuId(Integer studentId);
 }

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/BasicUserDto.java

@@ -0,0 +1,44 @@
+package com.ym.mec.biz.dal.dto;
+
+public class BasicUserDto {
+
+    private Integer userId;
+
+    private String name;
+
+    private String headUrl;
+
+    private Integer gender;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getHeadUrl() {
+        return headUrl;
+    }
+
+    public void setHeadUrl(String headUrl) {
+        this.headUrl = headUrl;
+    }
+
+    public Integer getGender() {
+        return gender;
+    }
+
+    public void setGender(Integer gender) {
+        this.gender = gender;
+    }
+}

+ 5 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java

@@ -2,13 +2,15 @@ package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 
+import java.util.List;
+
 public class CourseListDto {
 
     @ApiModelProperty(value = "乐团、vip课编号",required = true)
     private String musicGroupId;
 
     @ApiModelProperty(value = "学生姓名",required = true)
-    private String studentNames;
+    private List<String> studentNames;
 
     @ApiModelProperty(value = "乐团、vip课名称",required = true)
     private String musicGroupName;
@@ -36,11 +38,11 @@ public class CourseListDto {
         this.musicGroupId = musicGroupId;
     }
 
-    public String getStudentNames() {
+    public List<String> getStudentNames() {
         return studentNames;
     }
 
-    public void setStudentNames(String studentNames) {
+    public void setStudentNames(List<String> studentNames) {
         this.studentNames = studentNames;
     }
 

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

@@ -42,25 +42,25 @@ public class EmployeeDto {
     private java.util.Date demissionDate;
 
     @ApiModelProperty(value = "部门ID",required = false)
-    private Long organId;
+    private Long organIdList;
 
     @ApiModelProperty(value = "部门名称",required = false)
-    private String organName;
+    private String organNameList;
 
-    public Long getOrganId() {
-        return organId;
+    public Long getOrganIdList() {
+        return organIdList;
     }
 
-    public void setOrganId(Long organId) {
-        this.organId = organId;
+    public void setOrganIdList(Long organIdList) {
+        this.organIdList = organIdList;
     }
 
-    public String getOrganName() {
-        return organName;
+    public String getOrganNameList() {
+        return organNameList;
     }
 
-    public void setOrganName(String organName) {
-        this.organName = organName;
+    public void setOrganNameList(String organNameList) {
+        this.organNameList = organNameList;
     }
 
     public Integer getId() {

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicCardDto.java

@@ -8,6 +8,9 @@ public class MusicCardDto {
     @ApiModelProperty(value = "用户姓名",required = true)
     private String userName;
 
+    @ApiModelProperty(value = "乐团编号",required = true)
+    private String musicGroupId;
+
     @ApiModelProperty(value = "乐团名称",required = true)
     private String musicGroupName;
 
@@ -29,6 +32,14 @@ public class MusicCardDto {
     @ApiModelProperty(value = "vip课数量",required = true)
     private Integer vipClassNum;
 
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
     public Integer getMusicGroupNum() {
         return musicGroupNum;
     }

+ 87 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentDemoGroupListDto.java

@@ -0,0 +1,87 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/25
+ */
+public class StudentDemoGroupListDto {
+
+    @ApiModelProperty(value = "试听课ID",required = false)
+    private Long demoGroupId;
+
+    @ApiModelProperty(value = "用户ID",required = false)
+    private Long userId;
+
+    @ApiModelProperty(value = "用户名称",required = false)
+    private String userName;
+
+    @ApiModelProperty(value = "用户头像",required = false)
+    private String avatar;
+
+    @ApiModelProperty(value = "简介",required = false)
+    private String introduction;
+
+    @ApiModelProperty(value = "授课次数",required = false)
+    private Integer numberOfClasses;
+
+    @ApiModelProperty(value = "科目名称列表,逗号分隔",required = false)
+    private String subjectList;
+
+    public Long getDemoGroupId() {
+        return demoGroupId;
+    }
+
+    public void setDemoGroupId(Long demoGroupId) {
+        this.demoGroupId = demoGroupId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getIntroduction() {
+        return introduction;
+    }
+
+    public void setIntroduction(String introduction) {
+        this.introduction = introduction;
+    }
+
+    public Integer getNumberOfClasses() {
+        return numberOfClasses;
+    }
+
+    public void setNumberOfClasses(Integer numberOfClasses) {
+        this.numberOfClasses = numberOfClasses;
+    }
+
+    public String getSubjectList() {
+        return subjectList;
+    }
+
+    public void setSubjectList(String subjectList) {
+        this.subjectList = subjectList;
+    }
+}

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentDemoGroupQueryInfo.java

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/25
+ */
+public class StudentDemoGroupQueryInfo extends QueryInfo {
+
+    private String teacherName;
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+}

+ 9 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary;
 import com.ym.mec.biz.dal.page.VipClassQueryInfo;
+import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 import org.apache.ibatis.annotations.Param;
@@ -120,5 +121,12 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param userId
      * @return
      */
-    List<CourseListDto> queryCoursePage(int userId);
+    List<CourseListDto> queryCoursePage(Integer userId);
+
+    /**
+     * 获取学员所在群组信息
+     * @param userId
+     * @return
+     */
+    List<ImGroupModel> queryUserGroups(Integer userId);
 }

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/DemoGroupService.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.DemoGroupApplyDto;
 import com.ym.mec.biz.dal.entity.DemoGroup;
+import com.ym.mec.biz.dal.page.StudentDemoGroupQueryInfo;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface DemoGroupService extends BaseService<Long, DemoGroup> {
@@ -13,4 +15,18 @@ public interface DemoGroupService extends BaseService<Long, DemoGroup> {
      */
     void demoGroupApply(DemoGroupApplyDto demoGroupApplyDto);
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/25
+     * 获取试听课列表
+     */
+    PageInfo queryStudentDemoGroups(StudentDemoGroupQueryInfo queryInfo);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/25
+     * 试听课订阅
+     */
+    void demoGroupSubscribe(Long demoGroupId);
+
 }

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

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
 import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
 import com.ym.mec.biz.dal.entity.MusicGroup;
@@ -18,6 +20,7 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
     /**
      * 建团申请数据提交
      * @param subFeeSettingDto
+     * @Author superzou
      */
     void createGroup(SubFeeSettingDto subFeeSettingDto);
 
@@ -33,4 +36,11 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
      * @return
      */
     MusicCardDto queryPersonalMusicGroups(Integer id);
+
+    /**
+     * 根据学员编号获取相关老师列表
+     * @param studentId
+     * @return
+     */
+    List<BasicUserDto> findTeachersByStuId(Integer studentId);
 }

+ 14 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -8,6 +8,7 @@ import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.VipClassQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
@@ -228,7 +229,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Override
     public PageInfo<TeacherVipClassInfoDto> getTeacherVipClass(VipClassQueryInfo queryInfo) {
         PageInfo<TeacherVipClassInfoDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-        Map<String, Object> params = new HashMap<String, Object>();
+        Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
         List<TeacherVipClassInfoDto> dataList = null;
         int count = classGroupDao.countTeacherVipClass(params);
@@ -321,7 +322,18 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         return classGroupAndTeachers;
     }
 
-    public List<CourseListDto> queryCoursePage(int userId) {
+    public List<CourseListDto> queryCoursePage(Integer userId) {
+        List<CourseListDto> courseListDtos = classGroupDao.queryCoursePage(userId);
+        courseListDtos.forEach(e->{
+            if("VIP".equals(e.getTeachMode())){
+                classGroupDao.findVipStuNames(e.getMusicGroupId());
+            }
+        });
         return classGroupDao.queryCoursePage(userId);
     }
+
+    @Override
+    public List<ImGroupModel> queryUserGroups(Integer userId) {
+        return classGroupDao.queryUserGroups(userId);
+    }
 }

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

@@ -2,23 +2,29 @@ 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.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.DemoGroupClassGroupMapperDao;
-import com.ym.mec.biz.dal.dao.DemoGroupCoursesPlanDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.DemoGroupApplyDto;
 import com.ym.mec.biz.dal.dto.VipGroupApplyBaseInfoDto;
 import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
 import com.ym.mec.biz.dal.entity.DemoGroupClassGroupMapper;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.page.StudentDemoGroupQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import com.ym.mec.biz.dal.dao.DemoGroupDao;
 import com.ym.mec.biz.dal.entity.DemoGroup;
 import com.ym.mec.biz.service.DemoGroupService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
 
 @Service
 public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  implements DemoGroupService {
@@ -31,6 +37,10 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 	private DemoGroupClassGroupMapperDao demoGroupClassGroupMapperDao;
 	@Autowired
 	private DemoGroupCoursesPlanDao demoGroupCoursesPlanDao;
+	@Autowired
+	private CourseScheduleDao courseScheduleDao;
+	@Autowired
+	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
 
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
@@ -40,6 +50,7 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 		return demoGroupDao;
 	}
 
+	@Transactional(rollbackFor = Exception.class)
 	@Override
 	public void demoGroupApply(DemoGroupApplyDto demoGroupApplyDto) {
 		SysUser user = sysUserFeignService.queryUserInfo();
@@ -57,6 +68,38 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 		demoGroupCoursesPlanDao.batchInsertByDates(demoGroupApplyDto.getCourseDates(),demoGroupApplyDto.getId());
 	}
 
+	@Override
+	public PageInfo queryStudentDemoGroups(StudentDemoGroupQueryInfo queryInfo) {
+		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List dataList = null;
+		int count = demoGroupDao.countDemoGroupList(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = demoGroupDao.findDemoGroupList(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	@Transactional(rollbackFor = Exception.class)
+	@Override
+	public void demoGroupSubscribe(Long demoGroupId) {
+		SysUser user = sysUserFeignService.queryUserInfo();
+		ClassGroupStudentMapper classGroupStudentMapper=new ClassGroupStudentMapper();
+		classGroupStudentMapper.setClassGroupId(demoGroupDao.findClassGroupIDByDemoGroupId(demoGroupId));
+		classGroupStudentMapper.setUserId(user.getId());
+		classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+		classGroupStudentMapperDao.insert(classGroupStudentMapper);
+		createCourseScheduleAndUpdateOrganId(demoGroupId);
+	}
+
 	/**
 	 * @Author: Joburgess
 	 * @Date: 2019/9/25
@@ -64,6 +107,14 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 	 */
 	public void createCourseScheduleAndUpdateOrganId(Long demoGroupId){
 		DemoGroup demoGroup=demoGroupDao.get(demoGroupId);
-
+		if(demoGroupDao.countDemoGroupStudents(demoGroupId)>0){
+			courseScheduleDao.batchAddCourseSchedules(demoGroupDao.createCourseScheduleByDemoGroup(demoGroup));
+		}
+		List<Integer> organIds = demoGroupDao.organIdListByDemoGroupId(demoGroup.getId());
+		organIds.add(demoGroupDao.getOrganIdByUserId(demoGroup.getUserId().longValue()));
+		HashSet<Integer> hashSet = new HashSet<>(organIds);
+		String organIdsString = StringUtils.join(hashSet, ",");
+		demoGroup.setOrganIdList(organIdsString);
+		demoGroupDao.update(demoGroup);
 	}
 }

+ 4 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -10,6 +10,7 @@ import java.util.Map;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.entity.Teacher;
@@ -64,7 +65,9 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	public void add(Employee employee) throws Exception {
 		SysUser user = sysUserFeignService.getUserByMobile(employee.getPhone());
 		if(user != null){
-			throw new Exception("系统已存在该手机号的老师,请核查");
+			employee.setUserType(SysUserType.SYSTEM);
+			teacherDao.updateUser(employee);
+			return;
 		}
 		//保存用户表信息
 		sysUserFeignService.addUser(employee);

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

@@ -1,6 +1,8 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
 import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
 import com.ym.mec.biz.dal.entity.*;
@@ -101,4 +103,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup>
 		musicCardDto.setVipClassNum(musicGroupDao.countCourseByType(id,ClassGroupTypeEnum.VIP));
 		return musicGroupDao.queryPersonalMusicGroups(id);
 	}
+
+	@Override
+	public List<BasicUserDto> findTeachersByStuId(Integer studentId) {
+		return musicGroupDao.findTeachersByStuId(studentId);
+	}
 }

+ 17 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -286,4 +286,21 @@
             WHERE cgsm.user_id_ = #{userId} AND cg.type_ = 'VIP') a
             ORDER BY a.create_time_ DESC
     </select>
+
+    <resultMap id="imGroupModel" type="com.ym.mec.common.entity.ImGroupModel">
+        <result column="id_" property="id"/>
+        <result column="name_" property="name"/>
+        <result column="student_num_" property="minute"/>
+    </resultMap>
+    <select id="queryUserGroups" resultMap="imGroupModel">
+        SELECT cg.id_,cg.name_,cg.student_num_ FROM class_group_student_mapper cgsm
+        LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
+        WHERE cgsm.user_id_ = #{userId}
+    </select>
+    <select id="findVipStuNames" resultType="java.lang.String">
+        SELECT su.username_ FROM vip_group_class_group_mapper vgcgm
+        LEFT JOIN class_group_student_mapper cgsm ON vgcgm.class_group_id_ = cgsm.class_group_id_
+        LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
+        WHERE vgcgm.vip_group_id_ = #{musicGroupId}
+    </select>
 </mapper>

+ 88 - 0
mec-biz/src/main/resources/config/mybatis/DemoGroupMapper.xml

@@ -15,6 +15,16 @@
 		<result column="update_time_" property="updateTime" />
 		<result column="user_id_" property="userId" />
 	</resultMap>
+
+	<resultMap id="studentDemoGroupListDto" type="com.ym.mec.biz.dal.dto.StudentDemoGroupListDto">
+		<result property="demoGroupId" column="demo_group_id_"/>
+		<result property="userId" column="user_id_"/>
+		<result property="userName" column="username_"/>
+		<result property="avatar" column="avatar_"/>
+		<result property="introduction" column="introduction_"/>
+		<result property="numberOfClasses" column="number_of_classes_"/>
+		<result property="subjectList" column="subject_list_"/>
+	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
 	<select id="get" resultMap="DemoGroup" >
@@ -77,4 +87,82 @@ create_time_ = #{createTime},
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM demo_group
 	</select>
+
+	<select id="organIdListByDemoGroupId" resultType="int">
+		SELECT
+			su.organ_id_
+		FROM
+			demo_group_class_group_mapper dgcgm
+			LEFT JOIN class_group_student_mapper cgsm ON dgcgm.class_group_id_=cgsm.class_group_id_
+			LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
+		WHERE dgcgm.demo_group_id_=#{demoGroupId}
+	</select>
+	<select id="getOrganIdByUserId" resultType="java.lang.Integer">
+		select organ_id_ from sys_user where id_=#{userId}
+	</select>
+	<select id="createCourseScheduleByDemoGroupId" parameterType="com.ym.mec.biz.dal.entity.DemoGroup" resultMap="com.ym.mec.biz.dal.entity.CourseSchedule.CourseSchedule">
+		SELECT
+			dgcgm.class_group_id_ class_group_id_,
+			'NOT_START' status_,
+			DATE_FORMAT(dgcp.courses_start_time_,'%Y-%m-%d') class_date_,
+			dgcp.courses_start_time_ start_class_time_,
+			DATE_ADD(dgcp.courses_start_time_,INTERVAL #{demoGroup.singleClassMinutes} MINUTE) end_class_time_,
+			#{demoGroup.userId} teacher_id_,
+			'ONLINE' teach_mode_
+		FROM
+			demo_group_courses_plan dgcp
+			LEFT JOIN demo_group_class_group_mapper dgcgm ON dgcp.demo_group_id_=dgcgm.demo_group_id_
+			WHERE dgcp.demo_group_id_=#{demoGroup.id} AND dgcp.courses_start_time_ &gt; NOW()
+	</select>
+	<select id="countDemoGroupStudents" resultType="java.lang.Integer">
+		SELECT
+			count(cgsm.user_id_)
+		FROM
+			demo_group_class_group_mapper dgcgm
+			LEFT JOIN class_group_student_mapper cgsm ON dgcgm.class_group_id_=cgsm.class_group_id_
+		WHERE dgcgm.demo_group_id_=#{demoGroupId}
+	</select>
+
+	<sql id="demoGroupQueryCondition">
+		<where>
+			<if test="teacherName!=null">
+				su.username like concat('%',#{teacherName},'%')
+			</if>
+		</where>
+	</sql>
+
+	<select id="findDemoGroupList" resultMap="studentDemoGroupListDto">
+		SELECT
+			dg.id_ demo_group_id_,
+			su.id_ user_id_,
+			su.username_,
+			su.avatar_,
+			COUNT(DISTINCT cs.id_) number_of_classes_,
+			GROUP_CONCAT(DISTINCT s.name_) subject_list_
+		FROM
+			demo_group dg
+			LEFT JOIN sys_user su ON dg.user_id_=su.id_
+			LEFT JOIN demo_group_class_group_mapper dgcgm ON dg.id_=dgcgm.demo_group_id_
+			LEFT JOIN class_group cg ON dgcgm.class_group_id_=cg.id_
+			LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,cg.subject_id_list_)
+			LEFT JOIN course_schedule cs ON dgcgm.class_group_id_=cs.class_group_id_
+			<include refid="demoGroupQueryCondition"/>
+		GROUP BY dg.id_
+		ORDER BY dg.id_
+	</select>
+	<select id="countDemoGroupList" resultType="java.lang.Integer">
+		SELECT
+			count(*)
+		FROM
+			demo_group dg
+			LEFT JOIN sys_user su ON dg.user_id_=su.id_
+		<include refid="demoGroupQueryCondition"/>
+	</select>
+	<select id="findClassGroupIDByDemoGroupId" resultType="java.lang.Integer">
+		SELECT
+			class_group_id_
+		FROM
+			demo_group_class_group_mapper
+		WHERE demo_group_id_=#{demoGroupId}
+	</select>
 </mapper>

+ 10 - 9
mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -8,7 +8,7 @@
 
 	<resultMap type="com.ym.mec.biz.dal.entity.Employee" id="Employee">
 		<result column="user_id_" property="userId" />
-		<result column="organ_id_list" property="organIdList" />
+		<result column="organ_id_list_" property="organIdList" />
 		<result column="job_nature_" property="jobNature" />
 		<result column="is_probation_period_" property="isProbationPeriod" />
 		<result column="education_background_" property="educationBackground" />
@@ -40,7 +40,7 @@
 		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
 		</selectKey>
 		-->
-		INSERT INTO employee (user_id_,organ_id_list,job_nature_,is_probation_period_,education_background_,graduate_school_,technical_titles_,entry_date_,certificate_type_,certificate_num_,update_time_,create_time_,introduction_,demission_date_) VALUES(#{userId},#{organIdList},#{jobNature},#{isProbationPeriod},#{educationBackground},#{graduateSchool},#{technicalTitles},#{entryDate},#{certificateType},#{certificateNum},#{updateTime},#{createTime},#{introduction},#{demissionDate})
+		INSERT INTO employee (user_id_,organ_id_list_,job_nature_,is_probation_period_,education_background_,graduate_school_,technical_titles_,entry_date_,certificate_type_,certificate_num_,update_time_,create_time_,introduction_,demission_date_) VALUES(#{userId},#{organIdList},#{jobNature},#{isProbationPeriod},#{educationBackground},#{graduateSchool},#{technicalTitles},#{entryDate},#{certificateType},#{certificateNum},#{updateTime},#{createTime},#{introduction},#{demissionDate})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -53,7 +53,7 @@
         graduate_school_ = #{graduateSchool},
         </if>
         <if test="organId != null">
-            organ_id_list = #{organIdList},
+            organ_id_list_ = #{organIdList},
         </if>
         <if test="introduction != null">
         introduction_ = #{introduction},
@@ -124,8 +124,8 @@
         <result property="jobNature" column="job_nature_" />
         <result property="entryDate" column="entry_date_" />
         <result property="demissionDate" column="demission_date_" />
-        <result property="organId" column="organ_id_" />
-        <result property="organName" column="organ_name_" />
+        <result property="organIdList" column="organ_id_list_" />
+        <result property="organNameList" column="organ_name_list_" />
     </resultMap>
 
     <sql id="queryCondition">
@@ -150,10 +150,10 @@
         su.username_,
         su.gender_,
         su.phone_,
-        sr.role_name_,
+        GROUP_CONCAT(DISTINCT sr.role_name_) role_name_,
         su.lock_flag_,
-        su.organ_id_,
-        o.name_ organ_name_,
+        e.organ_id_list_,
+        GROUP_CONCAT(DISTINCT o.name_) organ_name_list_,
         e.job_nature_,
         e.entry_date_,
         e.demission_date_
@@ -162,8 +162,9 @@
         LEFT JOIN employee e ON su.id_=e.user_id_
         LEFT JOIN sys_user_role sur ON su.id_=sur.user_id_
         LEFT JOIN sys_role sr ON sur.role_id_=sr.id_
-        LEFT JOIN organization o ON su.organ_id_=o.id_
+        LEFT JOIN organization o ON FIND_IN_SET(o.id_,e.organ_id_list_)
         <include refid="queryCondition"/>
+        GROUP BY su.id_
     </select>
 
     <select id="queryEmployByOrganIdCount" resultType="java.lang.Integer">

+ 17 - 1
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -133,6 +133,7 @@
 		<result column="current_class_" property="currentClass" />
 		<result column="current_grade_" property="currentGrade" />
 		<result column="music_group_name_" property="musicGroupName" />
+		<result column="music_group_id_" property="musicGroupId" />
 		<result column="vip_class_num_" property="vipClassNum" />
 		<result column="music_group_num_" property="musicGroupNum" />
 		<result column="payment_status_" property="paymentStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
@@ -140,7 +141,7 @@
 
     <select id="queryUserMusicGroups" resultMap="queryUserMusicGroupsMap">
 		SELECT sr.name_ user_name_,sr.current_class_,sr.current_grade_,
-		sr.payment_status_,mg.name_ music_group_name_,s.name_ subject_name_
+		sr.payment_status_,mg.name_ music_group_name_,s.name_ subject_name_,mg.id_ music_group_id_
 		FROM student_registration sr
 		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
 		LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
@@ -166,4 +167,19 @@
 		LEFT JOIN class_group cg ON sr.class_group_id_ = cg.id_
 		WHERE sr.user_id_ = #{userId} AND cg.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 	</select>
+
+	<resultMap type="com.ym.mec.biz.dal.dto.BasicUserDto" id="BasicUserDto">
+		<result column="username_" property="name" />
+		<result column="user_id_" property="userId" />
+		<result column="head_url_" property="headUrl" />
+		<result column="gender_" property="gender"/>
+	</resultMap>
+	<select id="findTeachersByStuId" resultMap="BasicUserDto">
+		SELECT username_,id_ user_id_,avatar_ head_url_,gender_ FROM sys_user
+		WHERE id_ IN (SELECT DISTINCT(su.id_) FROM class_group_student_mapper cgsp
+		LEFT JOIN class_group cg ON cgsp.class_group_id_ = cg.id_
+		LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.class_group_id_
+		LEFT JOIN sys_user su ON cgtm.user_id_ = su.id_
+		WHERE cgsp.user_id_ = #{studentId})
+	</select>
 </mapper>

+ 4 - 3
mec-client-api/src/main/java/com/ym/im/ImFeignService.java

@@ -1,12 +1,13 @@
 package com.ym.im;
 
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
 import com.ym.im.fallback.ImFeignServiceFallback;
 import com.ym.mec.common.config.FeignConfiguration;
 import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.entity.ImUserModel;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
 
 @FeignClient(name = "im-server", configuration = FeignConfiguration.class, fallback = ImFeignServiceFallback.class)
 public interface ImFeignService {

+ 12 - 25
mec-common/common-core/src/main/java/com/ym/mec/common/config/FeignConfiguration.java

@@ -1,35 +1,22 @@
 package com.ym.mec.common.config;
 
-import java.util.Enumeration;
-
-import javax.servlet.http.HttpServletRequest;
-
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
 
+import feign.Logger;
 import feign.RequestInterceptor;
-import feign.RequestTemplate;
 
 @Configuration
-public class FeignConfiguration implements RequestInterceptor {
-
-	@Override
-	public void apply(RequestTemplate template) {
-		ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
-		if (attributes == null) {
-			return;
-		}
-		HttpServletRequest request = attributes.getRequest();
-		Enumeration<String> headerNames = request.getHeaderNames();
-		if (headerNames != null) {
-			while (headerNames.hasMoreElements()) {
-				String name = headerNames.nextElement();
-				String values = request.getHeader(name);
-				template.header(name, values);
+public class FeignConfiguration {
 
-			}
-		}
+	@Bean
+	Logger.Level feignLoggerLevel() {
+		// 这里记录所有,根据实际情况选择合适的日志level
+		return Logger.Level.FULL;
+	}
+	
+	@Bean
+	public RequestInterceptor requestInterceptor(){
+		return new RequestHeaderConfiguration();
 	}
-
 }

+ 128 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/config/RequestAttributeHystrixConcurrencyStrategy.java

@@ -0,0 +1,128 @@
+package com.ym.mec.common.config;
+
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+
+import com.netflix.hystrix.HystrixThreadPoolKey;
+import com.netflix.hystrix.HystrixThreadPoolProperties;
+import com.netflix.hystrix.strategy.HystrixPlugins;
+import com.netflix.hystrix.strategy.concurrency.HystrixConcurrencyStrategy;
+import com.netflix.hystrix.strategy.concurrency.HystrixRequestVariable;
+import com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableLifecycle;
+import com.netflix.hystrix.strategy.eventnotifier.HystrixEventNotifier;
+import com.netflix.hystrix.strategy.executionhook.HystrixCommandExecutionHook;
+import com.netflix.hystrix.strategy.metrics.HystrixMetricsPublisher;
+import com.netflix.hystrix.strategy.properties.HystrixPropertiesStrategy;
+import com.netflix.hystrix.strategy.properties.HystrixProperty;
+
+@Component
+public class RequestAttributeHystrixConcurrencyStrategy extends HystrixConcurrencyStrategy {
+	private static final Logger log = LoggerFactory.getLogger(RequestAttributeHystrixConcurrencyStrategy.class);
+
+	private HystrixConcurrencyStrategy delegate;
+
+	public RequestAttributeHystrixConcurrencyStrategy() {
+		try {
+			this.delegate = HystrixPlugins.getInstance().getConcurrencyStrategy();
+			if (this.delegate instanceof RequestAttributeHystrixConcurrencyStrategy) {
+				// Welcome to singleton hell...
+				return;
+			}
+			HystrixCommandExecutionHook commandExecutionHook = HystrixPlugins
+					.getInstance().getCommandExecutionHook();
+			HystrixEventNotifier eventNotifier = HystrixPlugins.getInstance()
+					.getEventNotifier();
+			HystrixMetricsPublisher metricsPublisher = HystrixPlugins.getInstance()
+					.getMetricsPublisher();
+			HystrixPropertiesStrategy propertiesStrategy = HystrixPlugins.getInstance()
+					.getPropertiesStrategy();
+			this.logCurrentStateOfHystrixPlugins(eventNotifier, metricsPublisher,
+					propertiesStrategy);
+			HystrixPlugins.reset();
+			HystrixPlugins.getInstance().registerConcurrencyStrategy(this);
+			HystrixPlugins.getInstance()
+					.registerCommandExecutionHook(commandExecutionHook);
+			HystrixPlugins.getInstance().registerEventNotifier(eventNotifier);
+			HystrixPlugins.getInstance().registerMetricsPublisher(metricsPublisher);
+			HystrixPlugins.getInstance().registerPropertiesStrategy(propertiesStrategy);
+		}
+		catch (Exception e) {
+			log.error("Failed to register Sleuth Hystrix Concurrency Strategy", e);
+		}
+	}
+
+	private void logCurrentStateOfHystrixPlugins(HystrixEventNotifier eventNotifier,
+			HystrixMetricsPublisher metricsPublisher,
+			HystrixPropertiesStrategy propertiesStrategy) {
+		if (log.isDebugEnabled()) {
+			log.debug("Current Hystrix plugins configuration is ["
+					+ "concurrencyStrategy [" + this.delegate + "]," + "eventNotifier ["
+					+ eventNotifier + "]," + "metricPublisher [" + metricsPublisher + "],"
+					+ "propertiesStrategy [" + propertiesStrategy + "]," + "]");
+			log.debug("Registering Sleuth Hystrix Concurrency Strategy.");
+		}
+	}
+
+	@Override
+	public <T> Callable<T> wrapCallable(Callable<T> callable) {
+		RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+		return new WrappedCallable<>(callable, requestAttributes);
+	}
+
+	@Override
+	public ThreadPoolExecutor getThreadPool(HystrixThreadPoolKey threadPoolKey,
+			HystrixProperty<Integer> corePoolSize,
+			HystrixProperty<Integer> maximumPoolSize,
+			HystrixProperty<Integer> keepAliveTime, TimeUnit unit,
+			BlockingQueue<Runnable> workQueue) {
+		return this.delegate.getThreadPool(threadPoolKey, corePoolSize, maximumPoolSize,
+				keepAliveTime, unit, workQueue);
+	}
+
+	@Override
+	public ThreadPoolExecutor getThreadPool(HystrixThreadPoolKey threadPoolKey,
+			HystrixThreadPoolProperties threadPoolProperties) {
+		return this.delegate.getThreadPool(threadPoolKey, threadPoolProperties);
+	}
+
+	@Override
+	public BlockingQueue<Runnable> getBlockingQueue(int maxQueueSize) {
+		return this.delegate.getBlockingQueue(maxQueueSize);
+	}
+
+	@Override
+	public <T> HystrixRequestVariable<T> getRequestVariable(
+			HystrixRequestVariableLifecycle<T> rv) {
+		return this.delegate.getRequestVariable(rv);
+	}
+
+	static class WrappedCallable<T> implements Callable<T> {
+
+		private final Callable<T> target;
+		private final RequestAttributes requestAttributes;
+
+		public WrappedCallable(Callable<T> target, RequestAttributes requestAttributes) {
+			this.target = target;
+			this.requestAttributes = requestAttributes;
+		}
+
+		@Override
+		public T call() throws Exception {
+			try {
+				RequestContextHolder.setRequestAttributes(requestAttributes);
+				return target.call();
+			}
+			finally {
+				RequestContextHolder.resetRequestAttributes();
+			}
+		}
+	}
+}

+ 33 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/config/RequestHeaderConfiguration.java

@@ -0,0 +1,33 @@
+package com.ym.mec.common.config;
+
+import java.util.Enumeration;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import feign.RequestInterceptor;
+import feign.RequestTemplate;
+
+public class RequestHeaderConfiguration implements RequestInterceptor {
+
+	@Override
+	public void apply(RequestTemplate template) {
+		ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+		if (attributes == null) {
+			return;
+		}
+		HttpServletRequest request = attributes.getRequest();
+		Enumeration<String> headerNames = request.getHeaderNames();
+		if (headerNames != null) {
+			while (headerNames.hasMoreElements()) {
+				String name = headerNames.nextElement();
+				String values = request.getHeader(name);
+				template.header(name, values);
+
+			}
+		}
+	}
+
+}

+ 10 - 0
mec-education/pom.xml

@@ -91,6 +91,16 @@
 			<groupId>javax.persistence</groupId>
 			<artifactId>javax.persistence-api</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>com.ym</groupId>
+			<artifactId>common-core</artifactId>
+			<exclusions>
+				<exclusion>
+					<groupId>org.mybatis.spring.boot</groupId>
+					<artifactId>mybatis-spring-boot-starter</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
 
 	</dependencies>
 	<build>

+ 3 - 1
mec-education/src/main/java/com/ym/mec/education/EducationApplication.java

@@ -7,12 +7,14 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.client.loadbalancer.LoadBalanced;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.client.RestTemplate;
 
-@MapperScan("com.ym.mec.education.mapper*")
+@MapperScan("com.ym.mec.education.mapper")
 @SpringBootApplication
 @EnableDiscoveryClient
+@ComponentScan(basePackages = "com.ym.mec")
 @Configuration
 @EnableSwagger2Doc
 public class EducationApplication {

+ 14 - 15
mec-education/src/main/java/com/ym/mec/education/config/ResourceServerConfig.java

@@ -1,4 +1,3 @@
-/*
 package com.ym.mec.education.config;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -7,7 +6,6 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
 import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
 import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
-
 import com.ym.mec.common.security.BaseAccessDeniedHandler;
 import com.ym.mec.common.security.BaseAuthenticationEntryPoint;
 
@@ -15,21 +13,22 @@ import com.ym.mec.common.security.BaseAuthenticationEntryPoint;
 @EnableResourceServer
 public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 
-	@Autowired
-	private BaseAccessDeniedHandler baseAccessDeniedHandler;
+    @Autowired
+    private BaseAccessDeniedHandler baseAccessDeniedHandler;
 
-	@Autowired
-	private BaseAuthenticationEntryPoint baseAuthenticationEntryPoint;
+    @Autowired
+    private BaseAuthenticationEntryPoint baseAuthenticationEntryPoint;
 
-	@Override
-	public void configure(HttpSecurity http) throws Exception {
-		http.csrf().disable().authorizeRequests().antMatchers("/v2/api-docs").permitAll().anyRequest().authenticated().and().httpBasic();
-	}
+    @Override
+    public void configure(HttpSecurity http) throws Exception {
+        http.csrf().disable().authorizeRequests().antMatchers("/v2/api-docs").permitAll()
+                .antMatchers("/api/**").permitAll()
+                .anyRequest().authenticated().and().httpBasic();
+    }
 
-	@Override
-	public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
-		resources.authenticationEntryPoint(baseAuthenticationEntryPoint).accessDeniedHandler(baseAccessDeniedHandler);
-	}
+    @Override
+    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
+        resources.authenticationEntryPoint(baseAuthenticationEntryPoint).accessDeniedHandler(baseAccessDeniedHandler);
+    }
 
 }
-*/

+ 2 - 5
mec-education/src/main/java/com/ym/mec/education/config/WebMvcConfig.java

@@ -1,4 +1,3 @@
-/*
 package com.ym.mec.education.config;
 
 import java.io.IOException;
@@ -39,10 +38,9 @@ import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
 
-	*/
-/**
+	/**
 	 * 枚举类的转换器 addConverterFactory
-	 *//*
+	 */
 
 	@Override
 	public void addFormatters(FormatterRegistry registry) {
@@ -107,4 +105,3 @@ public class WebMvcConfig implements WebMvcConfigurer {
 	}
 
 }
-*/

+ 3 - 1
mec-education/src/main/java/com/ym/mec/education/controller/MusicGroupController.java

@@ -11,6 +11,7 @@ import com.ym.mec.education.service.IMusicGroupService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 
@@ -20,7 +21,8 @@ import org.springframework.web.bind.annotation.RestController;
  * @Description: TODO
  * @date Date : 2019年09月25日 17:39
  */
-@RestController(value = "musicGroup")
+@RestController
+@RequestMapping("/api/musicGroup")
 @DefaultProperties(defaultFallback = "defaultFallback")
 @Slf4j
 public class MusicGroupController {

+ 19 - 7
mec-student/src/main/java/com/ym/mec/student/controller/CourseController.java

@@ -1,9 +1,9 @@
 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.service.ClassGroupService;
 import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.security.AuthUser;
-import com.ym.mec.common.security.SecurityUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,14 +18,26 @@ public class CourseController extends BaseController {
 
     @Autowired
     private ClassGroupService classGroupService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
 
     @ApiOperation("获取学生所购买课程列表")
     @GetMapping(value = "/queryUserMusicGroups")
     public Object queryCoursePage(){
-        AuthUser user = SecurityUtils.getUser();
-//        if(user == null){
-//            return failed("请登录");
-//        }
-        return succeed(classGroupService.queryCoursePage(1));
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            return failed("请登录");
+        }
+        return succeed(classGroupService.queryCoursePage(sysUser.getId()));
+    }
+
+    @ApiOperation("获取学员所有群组")
+    @GetMapping(value = "/queryUserGroups")
+    public Object queryUserGroups(){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            return failed("请登录");
+        }
+        return succeed(classGroupService.queryUserGroups(sysUser.getId()));
     }
 }

+ 12 - 3
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -27,11 +27,10 @@ public class MusicGroupController extends BaseController {
     @GetMapping(value = "/queryUserMusicGroups")
     public Object queryUserMusicGroups(){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        AuthUser user = SecurityUtils.getUser();
         if(sysUser == null){
             return failed("请重新登录");
         }
-        return succeed(musicGroupService.queryUserMusicGroups(1));
+        return succeed(musicGroupService.queryUserMusicGroups(sysUser.getId()));
     }
 
     @ApiOperation("获取学生个人中心乐团信息")
@@ -41,6 +40,16 @@ public class MusicGroupController extends BaseController {
         if(sysUser == null){
             return failed("请重新登录");
         }
-        return succeed(musicGroupService.queryPersonalMusicGroups(1));
+        return succeed(musicGroupService.queryPersonalMusicGroups(sysUser.getId()));
+    }
+
+    @ApiOperation(value = "根据学员编号,获取有关联的老师列表")
+    @GetMapping("/findTeachersByStuId")
+    public Object findTeachersByStuId(){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            return failed("请重新登录");
+        }
+        return succeed(musicGroupService.findTeachersByStuId(sysUser.getId()));
     }
 }

+ 37 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentDemoGroupController.java

@@ -0,0 +1,37 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.biz.dal.page.StudentDemoGroupQueryInfo;
+import com.ym.mec.biz.service.DemoGroupService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/25
+ */
+@Api(tags = "试听课-学生端")
+@RequestMapping("studentDemoGroup")
+@RestController
+public class StudentDemoGroupController extends BaseController {
+
+    @Autowired
+    private DemoGroupService demoGroupService;
+
+    @ApiOperation(value = "试听课列表获取")
+    @PostMapping("/queryStudentDemoGroups")
+    public Object queryStudentDemoGroups(StudentDemoGroupQueryInfo queryInfo){
+        return succeed(demoGroupService.queryStudentDemoGroups(queryInfo));
+    }
+
+    @ApiOperation(value = "试听课列表获取")
+    @PostMapping("/demoGroupSubscribe")
+    public Object demoGroupSubscribe(Long demoGroupId){
+        demoGroupService.demoGroupSubscribe(demoGroupId);
+        return succeed();
+    }
+}

+ 5 - 1
mec-student/src/main/resources/application.yml

@@ -76,4 +76,8 @@ management:
   
 feign:
   hystrix:
-    enabled: true
+    enabled: true
+
+logging:
+  level:
+    com.ym.mec.auth.api.client.SysUserFeignService: DEBUG

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

@@ -28,20 +28,6 @@ public class MusicGroupController extends BaseController {
     @Autowired
     private MusicGroupService musicGroupService;
 
-/*    @ApiOperation(value = "新增乐团")
-    @PostMapping("/add")
-    public Object add(@RequestBody MusicGroup musicGroup){
-        if(musicGroup != null){
-            if(StringUtils.isNotEmpty(musicGroup.getPaymentMonths())){
-                musicGroupService.add(musicGroup);
-            }else {
-                musicGroupService.insert(musicGroup);
-            }
-            return succeed();
-        }
-        return failed();
-    }*/
-
     @ApiOperation(value = "删除乐团")
     @PostMapping("/del/{id}")
     public Object del(@ApiParam(value = "乐团编号", required = true) @PathVariable("id") String id){

+ 1 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.common.security.SecurityUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;

+ 16 - 0
mec-web/src/test/java/com/ym/Test.java

@@ -2,11 +2,15 @@ package com.ym;
 
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.BeanUtils;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
 
 /**
  * @Author Joburgess
@@ -34,4 +38,16 @@ public class Test {
         file.createNewFile();
     }
 
+    @org.junit.Test
+    public void test3(){
+        List<Integer> list=new ArrayList<>();
+        list.add(1);
+        list.add(2);
+        list.add(3);
+        list.add(1);
+        HashSet<Integer> hashSet=new HashSet<>(list);
+        String join = StringUtils.join(hashSet, ",");
+        System.out.println(join);
+    }
+
 }

+ 6 - 0
pom.xml

@@ -67,6 +67,12 @@
 
 			<dependency>
 				<groupId>com.ym</groupId>
+				<artifactId>mec-client-api</artifactId>
+					<version>1.0</version>
+			</dependency>
+
+			<dependency>
+				<groupId>com.ym</groupId>
 				<artifactId>mec-biz</artifactId>
 				<version>1.0</version>
 			</dependency>