Explorar o código

Merge remote-tracking branch 'origin/master'

周箭河 %!s(int64=5) %!d(string=hai) anos
pai
achega
373f075141
Modificáronse 87 ficheiros con 1612 adicións e 672 borrados
  1. 5 0
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/SysUserFeignService.java
  2. 7 0
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/fallback/SysUserFeignServiceFallback.java
  3. 10 0
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysMenu.java
  4. 85 74
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/RoleController.java
  5. 7 7
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysMenuMapper.xml
  6. 12 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ChargeTypeDao.java
  7. 10 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  8. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  9. 12 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/GoodsCategoryDao.java
  10. 17 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  11. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupSubjectPlanDao.java
  12. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SchoolDao.java
  13. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  14. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
  15. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  16. 11 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherSchoolDao.java
  17. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java
  18. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java
  19. 174 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupsDto.java
  20. 22 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVipGroupDetailDto.java
  21. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVipGroupShowListDto.java
  22. 17 8
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendanceDto.java
  23. 24 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseHomeworkTemplate.java
  24. 6 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/GoodsCategory.java
  25. 56 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java
  26. 45 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupStudentFee.java
  27. 2 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SignStatusEnum.java
  28. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/GoodsCategoryQueryInfo.java
  29. 11 4
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  30. 0 2
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupTeacherSalaryService.java
  31. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  32. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleStudentPaymentService.java
  33. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java
  34. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/GoodsCategoryService.java
  35. 11 4
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  36. 2 3
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupSubjectPlanService.java
  37. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  38. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java
  39. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherSchoolService.java
  40. 24 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  41. 5 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseHomeworkTemplateServiceImpl.java
  42. 24 19
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  43. 105 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java
  44. 92 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  45. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsCategoryServiceImpl.java
  46. 111 74
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  47. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java
  48. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  49. 5 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java
  50. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  51. 12 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherSchoolServiceImpl.java
  52. 11 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  53. 86 175
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  54. 6 0
      mec-biz/src/main/resources/config/mybatis/ChargeTypeMapper.xml
  55. 8 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  56. 7 1
      mec-biz/src/main/resources/config/mybatis/CourseHomeworkTemplateMapper.xml
  57. 48 10
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  58. 2 2
      mec-biz/src/main/resources/config/mybatis/DemoGroupMapper.xml
  59. 22 5
      mec-biz/src/main/resources/config/mybatis/GoodsCategoryMapper.xml
  60. 23 3
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  61. 10 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupStudentFeeMapper.xml
  62. 6 0
      mec-biz/src/main/resources/config/mybatis/SchoolMapper.xml
  63. 4 2
      mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  64. 7 3
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  65. 3 0
      mec-biz/src/main/resources/config/mybatis/TeacherSchoolMapper.xml
  66. 30 14
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  67. 32 0
      mec-education/src/main/java/com/ym/mec/education/controller/CourseHomeworkTemplateController.java
  68. 2 2
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupRegisterController.java
  69. 5 5
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TaskController.java
  70. 1 1
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  71. 6 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherVipGroupController.java
  72. 66 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherVipSchoolController.java
  73. 3 3
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/eseal/provider/TsignPlugin.java
  74. 4 0
      mec-util/src/main/java/com/ym/mec/util/collection/MapUtil.java
  75. 10 4
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  76. 19 14
      mec-web/src/main/java/com/ym/mec/web/controller/GoodsCategoryController.java
  77. 2 3
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java
  78. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupSubjectPlanController.java
  79. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java
  80. 4 4
      mec-web/src/main/java/com/ym/mec/web/controller/SubjectController.java
  81. 66 0
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherVipSchoolController.java
  82. 9 0
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java
  83. 1 1
      mec-web/src/main/resources/application.yml
  84. 0 147
      mec-web/src/test/java/com/ym/webApplicationTest.java
  85. 5 5
      mec-workflow/src/main/java/com/ym/mec/workfow/controller/web/LeaveController.java
  86. 1 1
      workflowy/src/main/java/org/snaker/engine/core/TaskService.java
  87. 0 2
      workflowy/src/main/java/org/snaker/engine/impl/GeneralAccessStrategy.java

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

@@ -1,5 +1,7 @@
 package com.ym.mec.auth.api.client;
 
+import java.util.List;
+
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -28,4 +30,7 @@ public interface SysUserFeignService {
 
 	@GetMapping(value = "queryUserInfo")
 	public SysUser queryUserInfo();
+
+	@GetMapping(value = "role/queryRoleCodeListByUserId")
+	public List<String> queryRoleCodeListByUserId(@RequestParam("userId") Integer userId);
 }

+ 7 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/fallback/SysUserFeignServiceFallback.java

@@ -1,5 +1,7 @@
 package com.ym.mec.auth.api.client.fallback;
 
+import java.util.List;
+
 import org.springframework.stereotype.Component;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
@@ -33,4 +35,9 @@ public class SysUserFeignServiceFallback implements SysUserFeignService {
 		return false;
 	}
 
+	@Override
+	public List<String> queryRoleCodeListByUserId(Integer userId) {
+		return null;
+	}
+
 }

+ 10 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysMenu.java

@@ -60,9 +60,19 @@ public class SysMenu {
 	@ApiModelProperty(value = "逻辑删除标记(0--正常 1--删除)",required = false)
 	private String delFlag;
 
+	private Integer hid;
+
 	@ApiModelProperty(value = "子节点列表",required = false)
 	private List<SysMenu> sysMenus;
 
+	public Integer getHid() {
+		return hid;
+	}
+
+	public void setHid(Integer hid) {
+		this.hid = hid;
+	}
+
 	public List<SysMenu> getSysMenus() {
 		return sysMenus;
 	}

+ 85 - 74
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/RoleController.java

@@ -5,9 +5,12 @@ import com.ym.mec.auth.config.constant.SecurityConstants;
 import com.ym.mec.auth.service.SysMenuService;
 import com.ym.mec.auth.service.SysRoleMenuService;
 import com.ym.mec.auth.service.SysRoleService;
+import com.ym.mec.auth.service.SysUserRoleService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.page.QueryInfo;
+
 import io.swagger.annotations.*;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
@@ -20,78 +23,86 @@ import java.util.Date;
 @Api(tags = "角色服务")
 public class RoleController extends BaseController {
 
-    @Autowired
-    private SysRoleService sysRoleService;
-    @Autowired
-    private SysRoleMenuService sysRoleMenuService;
-    @Autowired
-    private SysMenuService sysMenuService;
-
-    @ApiOperation("根据权限id查询角色")
-    @GetMapping(value = "/{id}")
-    public Object getRole(@ApiParam(value = "权限编号", required = true) @PathVariable("id") Integer id) {
-        return succeed(sysRoleService.getRole(id));
-    }
-
-    @ApiOperation("删除角色")
-    @PostMapping(value = "/del")
-    public Object delRole(Integer id) {
-        sysRoleService.delRole(id);
-        return succeed();
-    }
-
-    @ApiOperation("修改角色")
-    @PostMapping(value = "/update")
-    public Object updateRole(@RequestBody SysRole sysRole) {
-        sysRole.setUpdateTime(new Date());
-        sysRoleService.updateRole(sysRole);
-        return succeed();
-    }
-
-    @ApiOperation("新增角色")
-    @PostMapping(value = "/add")
-    public Object addRole(@RequestBody SysRole sysRole) {
-        sysRoleService.addRole(sysRole);
-        return succeed();
-    }
-
-    @ApiOperation("分页查询角色列表")
-    @GetMapping(value = "/queryPage")
-    public Object queryPage(QueryInfo queryInfo) {
-        return succeed(sysRoleService.queryPage(queryInfo));
-    }
-
-    @ApiOperation("角色新增菜单权限(批量)")
-    @ApiImplicitParams({ @ApiImplicitParam(name = "roleId", value = "角色编号", required = true, dataType = "Integer"),
-            @ApiImplicitParam(name = "menuIds", value = "菜单id,逗号分隔", required = true, dataType = "String") })
-    @PostMapping(value = "/addRoleMenu",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
-    public Object addRoleMenu(String roleId,String menuIds) {
-        if(StringUtils.isEmpty(roleId) || StringUtils.isEmpty(menuIds)){
-            return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
-        }
-        sysRoleMenuService.batchInsert(Integer.parseInt(roleId),menuIds);
-        return succeed();
-    }
-
-    @ApiOperation("角色删除菜单权限(批量)")
-    @ApiImplicitParams({ @ApiImplicitParam(name = "roleId", value = "角色编号", required = true, dataType = "Integer"),
-            @ApiImplicitParam(name = "menuIds", value = "菜单id,逗号分隔", required = true, dataType = "String") })
-    @PostMapping(value = "/delRoleMenu",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
-    public Object delRoleMenu(String roleId,String menuIds) {
-        if(StringUtils.isEmpty(roleId) || StringUtils.isEmpty(menuIds)){
-            return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
-        }
-        sysRoleMenuService.batchdel(Integer.parseInt(roleId),menuIds);
-        return succeed();
-    }
-
-    @ApiOperation("根据角色编号查询拥有的菜单列表")
-    @ApiImplicitParams({ @ApiImplicitParam(name = "roleId", value = "角色编号", required = true, dataType = "Integer")})
-    @GetMapping(value = "/getMenus")
-    public Object getMenus(Integer roleId) {
-        if(roleId == null){
-            return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
-        }
-        return succeed(sysMenuService.getMenusByRoleId(roleId));
-    }
+	@Autowired
+	private SysRoleService sysRoleService;
+	@Autowired
+	private SysRoleMenuService sysRoleMenuService;
+	@Autowired
+	private SysMenuService sysMenuService;
+
+	@Autowired
+	private SysUserRoleService sysUserRoleService;
+
+	@GetMapping(value = "/queryRoleCodeListByUserId")
+	public Object queryRoleCodeListByUserId(Integer userId) {
+		return sysUserRoleService.queryRoleCodeListByUserId(userId);
+	}
+
+	@ApiOperation("根据权限id查询角色")
+	@GetMapping(value = "/{id}")
+	public Object getRole(@ApiParam(value = "权限编号", required = true) @PathVariable("id") Integer id) {
+		return succeed(sysRoleService.getRole(id));
+	}
+
+	@ApiOperation("删除角色")
+	@PostMapping(value = "/del")
+	public Object delRole(Integer id) {
+		sysRoleService.delRole(id);
+		return succeed();
+	}
+
+	@ApiOperation("修改角色")
+	@PostMapping(value = "/update")
+	public Object updateRole(@RequestBody SysRole sysRole) {
+		sysRole.setUpdateTime(new Date());
+		sysRoleService.updateRole(sysRole);
+		return succeed();
+	}
+
+	@ApiOperation("新增角色")
+	@PostMapping(value = "/add")
+	public Object addRole(@RequestBody SysRole sysRole) {
+		sysRoleService.addRole(sysRole);
+		return succeed();
+	}
+
+	@ApiOperation("分页查询角色列表")
+	@GetMapping(value = "/queryPage")
+	public Object queryPage(QueryInfo queryInfo) {
+		return succeed(sysRoleService.queryPage(queryInfo));
+	}
+
+	@ApiOperation("角色新增菜单权限(批量)")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "roleId", value = "角色编号", required = true, dataType = "Integer"),
+			@ApiImplicitParam(name = "menuIds", value = "菜单id,逗号分隔", required = true, dataType = "String") })
+	@PostMapping(value = "/addRoleMenu", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+	public Object addRoleMenu(String roleId, String menuIds) {
+		if (StringUtils.isEmpty(roleId) || StringUtils.isEmpty(menuIds)) {
+			return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
+		}
+		sysRoleMenuService.batchInsert(Integer.parseInt(roleId), menuIds);
+		return succeed();
+	}
+
+	@ApiOperation("角色删除菜单权限(批量)")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "roleId", value = "角色编号", required = true, dataType = "Integer"),
+			@ApiImplicitParam(name = "menuIds", value = "菜单id,逗号分隔", required = true, dataType = "String") })
+	@PostMapping(value = "/delRoleMenu", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+	public Object delRoleMenu(String roleId, String menuIds) {
+		if (StringUtils.isEmpty(roleId) || StringUtils.isEmpty(menuIds)) {
+			return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
+		}
+		sysRoleMenuService.batchdel(Integer.parseInt(roleId), menuIds);
+		return succeed();
+	}
+
+	@ApiOperation("根据角色编号查询拥有的菜单列表")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "roleId", value = "角色编号", required = true, dataType = "Integer") })
+	@GetMapping(value = "/getMenus")
+	public Object getMenus(Integer roleId) {
+		if (roleId == null) {
+			return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
+		}
+		return succeed(sysMenuService.getMenusByRoleId(roleId));
+	}
 }

+ 7 - 7
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysMenuMapper.xml

@@ -17,9 +17,11 @@
         <result column="sort_" property="sort"/>
         <result column="keep_alive_" property="keepAlive"/>
         <result column="type_" property="type"/>
+        <result column="type_" property="type"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
         <result column="del_flag_" property="delFlag"/>
+        <result column="hidden_" property="hid"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -35,14 +37,9 @@
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.auth.api.entity.SysMenu" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
-        <!--
-        <selectKey resultClass="int" keyProperty="id" >
-        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
-        </selectKey>
-        -->
         INSERT INTO sys_menu
-        (id_,name_,permission_,path_,parent_id_,icon_,component_,sort_,type_,create_time_,update_time_)
-        VALUES(#{id},#{name},#{permission},#{path},#{parentId},#{icon},#{component},#{sort},#{type},now(),now())
+        (id_,name_,permission_,path_,parent_id_,icon_,component_,sort_,type_,create_time_,update_time_,hidden_)
+        VALUES(#{id},#{name},#{permission},#{path},#{parentId},#{icon},#{component},#{sort},#{type},now(),now(),#{hid})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -82,6 +79,9 @@
             <if test="type != null">
                 type_ = #{type},
             </if>
+            <if test="hid != null">
+                hidden_ = #{hid},
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>

+ 12 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ChargeTypeDao.java

@@ -2,8 +2,19 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.ChargeType;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 public interface ChargeTypeDao extends BaseDAO<Integer, ChargeType> {
 
-	
+
+    /**
+     * 根据收费类型编号列表获取收费类型名称map
+     * @param chargeTypeIds
+     * @return
+     */
+    List<Map<Integer, String>> queryNameByIds(@Param("chargeTypeIds") Set<Integer> chargeTypeIds);
 }

+ 10 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -28,7 +28,7 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      *
      * @return
      */
-    List<ClassGroup> findAllMixClassGroup(@Param("musicGroupId") Integer musicGroupId);
+    List<ClassGroup> findAllMixClassGroup(@Param("musicGroupId") String musicGroupId);
 
     /**
      * @return java.util.List<com.ym.mec.biz.dal.entity.ClassGroup>
@@ -37,7 +37,7 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @params [musicGroupId]
      * @describe 获取所有班级
      */
-    List<ClassGroup> findAllClassGroupByMusicGroup(@Param("musicGroupId") Long musicGroupId);
+    List<ClassGroup> findAllClassGroupByMusicGroup(@Param("musicGroupId") String musicGroupId);
 
     /**
      * 根据合奏班ID查询该合奏班下的子班级
@@ -53,7 +53,7 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @param musicGroupId
      * @return
      */
-    List<ClassGroup> findAllNormalClassGroupByMusicGroupId(@Param("musicGroupId") int musicGroupId);
+    List<ClassGroup> findAllNormalClassGroupByMusicGroupId(@Param("musicGroupId") String musicGroupId);
 
     /**
      * 查询合奏班包含子班的名字信息
@@ -191,4 +191,11 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @return
      */
     List<ImGroupModel> queryTeacherGroups(@Param("userId") Integer userId, @Param("search") String search);
+
+    /**
+     * 获取未分配合奏的单技班列表
+     * @param musicGroupId
+     * @return
+     */
+    List<ClassGroup> findNoClassSubjects(String musicGroupId);
 }

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -39,6 +39,16 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     /**
      * @Author: Joburgess
+     * @Date: 2019/10/14
+     * @params [classDates, classGroupId]
+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+     * @describe 根据班级和上课日期获取课程计划
+     */
+    List<CourseSchedule> findByClassGroupAndDate(@Param("classDates") List<Date> classDates,
+                                                 @Param("classGroupId") Long classGroupId);
+
+    /**
+     * @Author: Joburgess
      * @Date: 2019/9/17
      * 根据日期获取学生当日排课信息
      */
@@ -204,5 +214,14 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
     CourseScheduleDto getCourseSchedules(@Param("courseScheduleId") Long courseScheduleId);
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/14
+     * @params [vipGroupId]
+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+     * @describe 获取vip课排课计划
+     */
+    List<CourseSchedule> findVipGroupCourseSchedules(@Param("vipGroupId") Long vipGroupId);
+
 
 }

+ 12 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/GoodsCategoryDao.java

@@ -1,9 +1,20 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.GoodsCategory;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface GoodsCategoryDao extends BaseDAO<Integer, GoodsCategory> {
 
-	
+
+    /**
+     * 根据父级编号获取子列表
+     * @param parentId
+     * @param yesOrNoEnum
+     * @return
+     */
+    List<GoodsCategory> findByParentId(@Param("parentId") Integer parentId, @Param("delFlag") YesOrNoEnum yesOrNoEnum);
 }

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

@@ -10,6 +10,7 @@ import com.ym.mec.common.entity.ImUserModel;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
@@ -61,10 +62,10 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取乐团总人数
-     * @param musicGroupId
+     * @param musicGroupIds
      * @return
      */
-    Integer countMusicGroupUserNum(String musicGroupId);
+    List<Map<String,Integer>> countMusicGroupUserNum(Set<String> musicGroupIds);
 
     /**
      * 获取乐团所有学员基本信息
@@ -87,4 +88,18 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     Set<Integer> queryTeacherIds(String id);
+
+    /**
+     * 根据乐团编号列表获取乐团在读人数map
+     * @param musicGroupIds
+     * @return
+     */
+    List<Map<String, Long>> countPayNum(@Param("musicGroupIds") Set<String> musicGroupIds);
+
+    /**
+     * 获取乐团列表
+     * @param musicGroupIds
+     * @return
+     */
+    List<MusicGroup> queryListByIds(@Param("musicGroupIds") Set<String> musicGroupIds);
 }

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

@@ -14,7 +14,7 @@ public interface MusicGroupSubjectPlanDao extends BaseDAO<Integer, MusicGroupSub
      * @param musicGroupId
      * @return
      */
-    List<MusicGroupSubjectPlan> getMusicSubjectClassPlan(@Param("musicGroupId") int musicGroupId);
+    List<MusicGroupSubjectPlan> getMusicSubjectClassPlan(@Param("musicGroupId") String musicGroupId);
 
 
     /**

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SchoolDao.java

@@ -6,7 +6,10 @@ import com.ym.mec.common.dal.BaseDAO;
 
 import org.apache.ibatis.annotations.Param;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 public interface SchoolDao extends BaseDAO<Integer, School> {
 
@@ -17,4 +20,11 @@ public interface SchoolDao extends BaseDAO<Integer, School> {
      * @return
      */
     List<School> queryByOrganId(@Param("organId") Integer organId, @Param("delFlag") YesOrNoEnum delFlag);
+
+    /**
+     * 根据学校编号列表获取学校名称map
+     * @param schoolIds
+     * @return
+     */
+    List<Map<Integer, String>> queryNameByIds(@Param("schoolIds") Set<Integer> schoolIds);
 }

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -37,7 +37,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 	 * @param subjectId
 	 * @return
 	 */
-	Integer countPayNum(@Param("musicGroupId") Integer musicGroupId, @Param("subjectId") Integer subjectId);
+	Integer countPayNum(@Param("musicGroupId") String musicGroupId, @Param("subjectId") Integer subjectId);
 
 	/**
 	 * 学生报名缴费金额详情
@@ -55,7 +55,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 	 * @param actualSubjectId 科目id
 	 * @return
 	 */
-	List<StudentRegistration> getNoClassStuBySubjectId(@Param("musicGroupId") Integer musicGroupId, @Param("actualSubjectId") Integer actualSubjectId);
+	List<StudentRegistration> getNoClassStuBySubjectId(@Param("musicGroupId") String musicGroupId, @Param("actualSubjectId") Integer actualSubjectId);
 
 	/**
 	 * 获取乐团声部未分配学生数
@@ -64,7 +64,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 	 * @param actualSubjectId
 	 * @return
 	 */
-	Integer getNoClassStuCountBySubjectId(@Param("musicGroupId") Integer musicGroupId, @Param("actualSubjectId") Integer actualSubjectId);
+	Integer getNoClassStuCountBySubjectId(@Param("musicGroupId") String musicGroupId, @Param("actualSubjectId") Integer actualSubjectId);
 
 	/**
 	 * 根据乐团id和user_id 更新

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

@@ -18,7 +18,7 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
      * @param musicGroupId
      * @return
      */
-    List<Subject> findSubByMusicGroupId(Integer musicGroupId);
+    List<Subject> findSubByMusicGroupId(String musicGroupId);
 
     /**
      * 通过乐团收费方式,获取默认的声部列表
@@ -53,7 +53,7 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
      * @param musicGroupId
      * @return
      */
-    List<SubjectApplyDetailDto> findSubApplyDetail(Integer musicGroupId);
+    List<SubjectApplyDetailDto> findSubApplyDetail(String musicGroupId);
 
     /**
      * 根据声部id字符串查询

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 public interface TeacherDao extends BaseDAO<Integer, Teacher> {
 
@@ -40,4 +41,11 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @return
      */
     List<BasicUserDto> queryGroupStudents(@Param("teacherId") Integer teacherId, @Param("search") String search);
+
+    /**
+     * 根据用户编号列表获取用户名称
+     * @param userIds
+     * @return
+     */
+    List<Map<Integer, String>> queryNameByIds(@Param("userIds") Set<Integer> userIds);
 }

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

@@ -3,7 +3,17 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.entity.TeacherSchool;
 import com.ym.mec.common.dal.BaseDAO;
 
+import java.util.List;
+
 public interface TeacherSchoolDao extends BaseDAO<Long, TeacherSchool> {
 
-	
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/14
+     * @params [teacherId]
+     * @return java.util.List<com.ym.mec.biz.dal.entity.TeacherSchool>
+     * @describe 根据教师编号获取教学点信息
+     */
+    List<TeacherSchool> findByTeacherId(Long teacherId);
+
 }

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

@@ -166,4 +166,13 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
      * @describe 统计学生vip课未上课时费用
      */
     List<Map<Long,BigDecimal>> countSurplusCourseFee(Long vipGroupId);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/14
+     * @params [teacherId]
+     * @return int
+     * @describe 统计老师开启的vip课数
+     */
+    int countTeacherVipGroups(Long teacherId);
 }

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -37,9 +38,20 @@ public class CourseListDto {
     @ApiModelProperty(value = "单节课时",required = true)
     private Integer singleClassMinutes;
 
-    @ApiModelProperty(value = "0待续费,1已续费",required = true)
+//    @ApiModelProperty(value = "0待续费,1已续费",required = true)
     private Integer renewStatus = 0;
 
+    //续费状态
+    private MusicGroupStudentFee.PaymentStatus paymentStatus;
+
+    public MusicGroupStudentFee.PaymentStatus getPaymentStatus() {
+        return paymentStatus;
+    }
+
+    public void setPaymentStatus(MusicGroupStudentFee.PaymentStatus paymentStatus) {
+        this.paymentStatus = paymentStatus;
+    }
+
     public ClassGroupTypeEnum getType() {
         return type;
     }

+ 174 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupsDto.java

@@ -0,0 +1,174 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+public class MusicGroupsDto {
+
+    @ApiModelProperty(value = "乐团编号",required = true)
+    private String musicGroupId;
+
+    @ApiModelProperty(value = "乐团名称",required = true)
+    private String musicGroupName;
+
+    @ApiModelProperty(value = "学校名称",required = true)
+    private String schoolName;
+
+    @ApiModelProperty(value = "学校编号",required = true)
+    private Integer schoolId;
+
+    @ApiModelProperty(value = "乐团状态",required = true)
+    private MusicGroupStatusEnum musicGroupStatus;
+
+    @ApiModelProperty(value = "收费类型编号",required = true)
+    private Integer chargeTypeId;
+
+    @ApiModelProperty(value = "收费类型名称",required = true)
+    private String chargeTypeName;
+
+    @ApiModelProperty(value = "教务老师编号",required = true)
+    private String educationalTeacherId;
+
+    @ApiModelProperty(value = "教务老师名称",required = true)
+    private String educationalTeacherName;
+
+    @ApiModelProperty(value = "教学主管编号",required = true)
+    private String teamTeacherId;
+
+    @ApiModelProperty(value = "教学主管名称",required = true)
+    private String teamTeacherName;
+
+    @ApiModelProperty(value = "申请时间",required = true)
+    private Date createTime;
+
+    @ApiModelProperty(value = "成团时间",required = true)
+    private Date billStartDate;
+
+    @ApiModelProperty(value = "成团人数",required = true)
+    private Integer billStartNum;
+
+    @ApiModelProperty(value = "在读人数",required = true)
+    private Integer payNum;
+
+    public String getEducationalTeacherId() {
+        return educationalTeacherId;
+    }
+
+    public void setEducationalTeacherId(String educationalTeacherId) {
+        this.educationalTeacherId = educationalTeacherId;
+    }
+
+    public String getTeamTeacherId() {
+        return teamTeacherId;
+    }
+
+    public void setTeamTeacherId(String teamTeacherId) {
+        this.teamTeacherId = teamTeacherId;
+    }
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public String getSchoolName() {
+        return schoolName;
+    }
+
+    public void setSchoolName(String schoolName) {
+        this.schoolName = schoolName;
+    }
+
+    public Integer getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Integer schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public MusicGroupStatusEnum getMusicGroupStatus() {
+        return musicGroupStatus;
+    }
+
+    public void setMusicGroupStatus(MusicGroupStatusEnum musicGroupStatus) {
+        this.musicGroupStatus = musicGroupStatus;
+    }
+
+    public Integer getChargeTypeId() {
+        return chargeTypeId;
+    }
+
+    public void setChargeTypeId(Integer chargeTypeId) {
+        this.chargeTypeId = chargeTypeId;
+    }
+
+    public String getChargeTypeName() {
+        return chargeTypeName;
+    }
+
+    public void setChargeTypeName(String chargeTypeName) {
+        this.chargeTypeName = chargeTypeName;
+    }
+
+    public String getEducationalTeacherName() {
+        return educationalTeacherName;
+    }
+
+    public void setEducationalTeacherName(String educationalTeacherName) {
+        this.educationalTeacherName = educationalTeacherName;
+    }
+
+    public String getTeamTeacherName() {
+        return teamTeacherName;
+    }
+
+    public void setTeamTeacherName(String teamTeacherName) {
+        this.teamTeacherName = teamTeacherName;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getBillStartDate() {
+        return billStartDate;
+    }
+
+    public void setBillStartDate(Date billStartDate) {
+        this.billStartDate = billStartDate;
+    }
+
+    public Integer getBillStartNum() {
+        return billStartNum;
+    }
+
+    public void setBillStartNum(Integer billStartNum) {
+        this.billStartNum = billStartNum;
+    }
+
+    public Integer getPayNum() {
+        return payNum;
+    }
+
+    public void setPayNum(Integer payNum) {
+        this.payNum = payNum;
+    }
+}

+ 22 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVipGroupDetailDto.java

@@ -1,6 +1,5 @@
 package com.ym.mec.biz.dal.dto;
 
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -12,9 +11,31 @@ import java.util.List;
  */
 public class StudentVipGroupDetailDto extends StudentVipGroupShowListDto {
 
+    @ApiModelProperty(value = "授课地点")
+    private String address;
+
+    @ApiModelProperty(value = "教师vip课申请数量")
+    private Integer numberOfClasses;
+
     @ApiModelProperty(value = "课程列表",required = false)
     private List<CourseSchedule> courseSchedules;
 
+    public Integer getNumberOfClasses() {
+        return numberOfClasses;
+    }
+
+    public void setNumberOfClasses(Integer numberOfClasses) {
+        this.numberOfClasses = numberOfClasses;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
     public List<CourseSchedule> getCourseSchedules() {
         return courseSchedules;
     }

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

@@ -39,6 +39,9 @@ public class StudentVipGroupShowListDto {
     @ApiModelProperty(value = "学生数量", required = false)
     private Integer studentNum;
 
+    @ApiModelProperty(value = "教师编号")
+    private Integer teacherId;
+
     @ApiModelProperty(value = "教师名称",required = false)
     private String teacherName;
 
@@ -55,6 +58,14 @@ public class StudentVipGroupShowListDto {
 
     private String categoryName;
 
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
     public String getCategoryName() {
         return categoryName;
     }

+ 17 - 8
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendanceDto.java

@@ -1,12 +1,10 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
 
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
-import com.ym.mec.biz.dal.enums.ParamEnum;
-
 /**
  * @Author Joburgess
  * @Date 2019/9/10
@@ -57,14 +55,25 @@ public class TeacherAttendanceDto {
     private Date currentTime;
 
     @ApiModelProperty(value = "教师正常签到提前时间(分钟)",required = false)
-    private ParamEnum teacherAttendanceTimeGap;
+    private Integer advanceSignInMinutes;
+
+    @ApiModelProperty(value = "老师可打卡范围,单位米")
+    private Integer attendanceRange;
+
+    public Integer getAttendanceRange() {
+        return attendanceRange;
+    }
+
+    public void setAttendanceRange(Integer attendanceRange) {
+        this.attendanceRange = attendanceRange;
+    }
 
-    public ParamEnum getTeacherAttendanceTimeGap() {
-        return teacherAttendanceTimeGap;
+    public Integer getAdvanceSignInMinutes() {
+        return advanceSignInMinutes;
     }
 
-    public void setTeacherAttendanceTimeGap(ParamEnum teacherAttendanceTimeGap) {
-        this.teacherAttendanceTimeGap = teacherAttendanceTimeGap;
+    public void setAdvanceSignInMinutes(Integer advanceSignInMinutes) {
+        this.advanceSignInMinutes = advanceSignInMinutes;
     }
 
     public Date getCurrentTime() {

+ 24 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseHomeworkTemplate.java

@@ -39,11 +39,33 @@ public class CourseHomeworkTemplate {
 	/** 班级类型(普通班级、合奏班级) */
 	@ApiModelProperty(value = "班级类型(普通班级、合奏班级、提高课班级、VIP班级)",required = true)
 	private ClassGroupTypeEnum classGroupType;
+
+	@ApiModelProperty(value = "班级类型")
+	private String classGroupTypeName;
 	
 	/**  */
 	@ApiModelProperty(value = "声部ID",required = true)
 	private Integer subjectId;
-	
+
+	@ApiModelProperty(value = "科目名称")
+	private String subjectName;
+
+	public String getClassGroupTypeName() {
+		return classGroupTypeName;
+	}
+
+	public void setClassGroupTypeName(String classGroupTypeName) {
+		this.classGroupTypeName = classGroupTypeName;
+	}
+
+	public String getSubjectName() {
+		return subjectName;
+	}
+
+	public void setSubjectName(String subjectName) {
+		this.subjectName = subjectName;
+	}
+
 	public void setId(Integer id){
 		this.id = id;
 	}
@@ -98,6 +120,7 @@ public class CourseHomeworkTemplate {
 
 	public void setClassGroupType(ClassGroupTypeEnum classGroupType) {
 		this.classGroupType = classGroupType;
+		this.classGroupTypeName=classGroupType.getMsg();
 	}
 
 	public void setSubjectId(Integer subjectId){

+ 6 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/GoodsCategory.java

@@ -33,8 +33,8 @@ public class GoodsCategory {
 	private Integer orderNo;
 	
 	/** 状态(1,表示可见  0,表示不可见) */
-	@ApiModelProperty(value = "状态(1,表示可见  0,表示不可见)",required = false)
-	private YesOrNoEnum status;
+	@ApiModelProperty(value = "状态",required = false)
+	private YesOrNoEnum delFlag;
 	
 	/** 描述 */
 	@ApiModelProperty(value = "描述",required = false)
@@ -97,12 +97,12 @@ public class GoodsCategory {
 		return this.orderNo;
 	}
 
-	public YesOrNoEnum getStatus() {
-		return status;
+	public YesOrNoEnum getDelFlag() {
+		return delFlag;
 	}
 
-	public void setStatus(YesOrNoEnum status) {
-		this.status = status;
+	public void setDelFlag(YesOrNoEnum delFlag) {
+		this.delFlag = delFlag;
 	}
 
 	public void setDesc(String desc){

+ 56 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java

@@ -26,6 +26,10 @@ public class MusicGroup {
 	/** 学校(合作单位) */
 	@ApiModelProperty(value = "学校(合作单位) ",required = false)
 	private Integer schoolId;
+
+	/** 学校(合作单位) */
+	@ApiModelProperty(value = "学校名称 ",required = false)
+	private String schoolName;
 	
 	/** 报名截止日期 */
 	@ApiModelProperty(value = "报名截止日期",required = false)
@@ -34,14 +38,23 @@ public class MusicGroup {
 	/** 团长 */
 	@ApiModelProperty(value = "运营主管",required = false)
 	private Integer teamTeacherId;
+	/** 团长 */
+	@ApiModelProperty(value = "运营主管名称",required = false)
+	private String teamTeacherName;
 	
 	/** 教务老师 */
+	@ApiModelProperty(value = "教务老师名字",required = false)
+	private String educationalTeacherName;
+	/** 教务老师 */
 	@ApiModelProperty(value = "教务老师",required = false)
 	private Integer educationalTeacherId;
 	
 	/** 收费类型 */
 	@ApiModelProperty(value = "收费类型",required = false)
 	private Integer chargeTypeId;
+	/** 收费类型 */
+	@ApiModelProperty(value = "收费类型名称",required = false)
+	private String chargeTypeName;
 	
 	@ApiModelProperty(value = "课程形态",required = false)
 	private String courseForm;
@@ -96,6 +109,49 @@ public class MusicGroup {
 	@ApiModelProperty(value = "乐团创建人",required = false)
 	private Integer operatorUserId;
 
+	@ApiModelProperty(value = "在读人数",required = true)
+	private Integer payNum;
+
+	public String getSchoolName() {
+		return schoolName;
+	}
+
+	public void setSchoolName(String schoolName) {
+		this.schoolName = schoolName;
+	}
+
+	public String getTeamTeacherName() {
+		return teamTeacherName;
+	}
+
+	public void setTeamTeacherName(String teamTeacherName) {
+		this.teamTeacherName = teamTeacherName;
+	}
+
+	public String getEducationalTeacherName() {
+		return educationalTeacherName;
+	}
+
+	public void setEducationalTeacherName(String educationalTeacherName) {
+		this.educationalTeacherName = educationalTeacherName;
+	}
+
+	public String getChargeTypeName() {
+		return chargeTypeName;
+	}
+
+	public void setChargeTypeName(String chargeTypeName) {
+		this.chargeTypeName = chargeTypeName;
+	}
+
+	public Integer getPayNum() {
+		return payNum;
+	}
+
+	public void setPayNum(Integer payNum) {
+		this.payNum = payNum;
+	}
+
 	public String getImg() {
 		return img;
 	}

+ 45 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupStudentFee.java

@@ -1,16 +1,39 @@
 package com.ym.mec.biz.dal.entity;
 
 import io.swagger.annotations.ApiModelProperty;
-import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.math.BigDecimal;
 import java.util.Date;
 
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import com.ym.mec.common.enums.BaseEnum;
+
 /**
  * 对应数据库表(music_group_student_fee_):
  */
 public class MusicGroupStudentFee {
 
+	public enum PaymentStatus implements BaseEnum<String, PaymentStatus> {
+
+		PAID_COMPLETED("完成缴费"), NON_PAYMENT("未缴费"), PROCESSING("缴费中");
+
+		private String desc;
+
+		PaymentStatus(String desc) {
+			this.desc = desc;
+		}
+
+		@Override
+		public String getCode() {
+			return name();
+		}
+
+		public String getDesc() {
+			return desc;
+		}
+	}
+
 	/**  */
 	private Long id;
 
@@ -21,7 +44,7 @@ public class MusicGroupStudentFee {
 	/**  */
 	@ApiModelProperty(value = "用户编号", required = false)
 	private Integer userId;
-	
+
 	@ApiModelProperty(value = "声部编号", required = false)
 	private Integer subjectId;
 
@@ -40,6 +63,10 @@ public class MusicGroupStudentFee {
 	@ApiModelProperty(value = "连续旷到次数", required = false)
 	private Integer continuousAbsenteeismTimes;
 
+	private PaymentStatus paymentStatus;
+
+	private BigDecimal temporaryCourseFee;
+
 	/**  */
 	private java.util.Date createTime;
 
@@ -126,6 +153,22 @@ public class MusicGroupStudentFee {
 		this.continuousAbsenteeismTimes = continuousAbsenteeismTimes;
 	}
 
+	public PaymentStatus getPaymentStatus() {
+		return paymentStatus;
+	}
+
+	public void setPaymentStatus(PaymentStatus paymentStatus) {
+		this.paymentStatus = paymentStatus;
+	}
+
+	public BigDecimal getTemporaryCourseFee() {
+		return temporaryCourseFee;
+	}
+
+	public void setTemporaryCourseFee(BigDecimal temporaryCourseFee) {
+		this.temporaryCourseFee = temporaryCourseFee;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 2 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SignStatusEnum.java

@@ -4,9 +4,8 @@ import com.ym.mec.common.enums.BaseEnum;
 
 //状态(1正常签到,0异常签到,2正常签退)
 public enum SignStatusEnum implements BaseEnum<Integer, SignStatusEnum> {
-    SIGN(1,"1正常签到"),
-    EXCEPTION(0,"异常签到"),
-    YES_QUIT(2,"正常签退");
+    SIGN_IN(0,"签到"),
+    SIGN_OUT(1,"签退");
 
     private Integer code;
     private String msg;

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/page/GoodsCategoryQueryInfo.java

@@ -10,7 +10,7 @@ public class GoodsCategoryQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "上级分类")
     private Integer parentId = 0;
 
-    @ApiModelProperty(value = "状态(1,可见  0,不可见)")
+    @ApiModelProperty(value = "状态")
     private YesOrNoEnum status = YesOrNoEnum.YES;
 
     public Integer getParentId() {

+ 11 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -29,7 +29,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param mixClassGroupId
      * @return
      */
-    List<ClassGroup> findClassGroup(Integer musicGroupId, Integer mixClassGroupId);
+    List<ClassGroup> findClassGroup(String musicGroupId, Integer mixClassGroupId);
 
     /**
      * 根据乐团编号查询单技班列表
@@ -37,7 +37,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param musicGroupId
      * @return
      */
-    List<ClassGroup> findAllNormalClassGroupByMusicGroupId(int musicGroupId);
+    List<ClassGroup> findAllNormalClassGroupByMusicGroupId(String musicGroupId);
 
 
     /**
@@ -46,7 +46,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param musicGroupId
      * @return
      */
-    List<ClassGroup> findAllMixClassGroupByMusicGroupId(int musicGroupId);
+    List<ClassGroup> findAllMixClassGroupByMusicGroupId(String musicGroupId);
 
     /**
      * @Author: Joburgess
@@ -55,7 +55,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @return java.util.List<com.ym.mec.biz.dal.entity.ClassGroup>
      * @describe 获取乐团下所有班级
      */
-    List<ClassGroup> findAllClassGroupByMusicGroup(Long musicGroupId);
+    List<ClassGroup> findAllClassGroupByMusicGroup(String musicGroupId);
 
     /**
      * 添加单技班
@@ -164,4 +164,11 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @return
      */
     ClassGroup addStudent(ClassGroup classGroup,int userId);
+
+    /**
+     * 获取未分配合奏的单技班列表
+     * @param musicGroupId
+     * @return
+     */
+    List<ClassGroup> findNoClassSubjects(String musicGroupId);
 }

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

@@ -1,9 +1,7 @@
 package com.ym.mec.biz.service;
 
-import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary;
 import com.ym.mec.common.service.BaseService;
-import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -110,6 +110,15 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
     void courseSwap(Long courseScheduleId1,Long courseScheduleId2);
 
     /**
+     * @Author: Joburgess
+     * @Date: 2019/10/14
+     * @params [day1, day2]
+     * @return void
+     * @describe 对调两天的课程
+     */
+    void courseSwapWithDay(Date day1,Date day2);
+
+    /**
      * 获取班级的课程计划
      *
      * @param classGroupList

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleStudentPaymentService.java

@@ -5,4 +5,13 @@ import com.ym.mec.common.service.BaseService;
 
 public interface CourseScheduleStudentPaymentService extends BaseService<Long, CourseScheduleStudentPayment> {
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/14
+     * @params [vipGroupId, userId]
+     * @return int
+     * @describe 生成学生vip课单节课时收费信息
+     */
+    int createCourseScheduleStudentPaymentForVipGroup(Long vipGroupId,Long userId);
+
 }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java

@@ -1,8 +1,28 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.common.service.BaseService;
 
+import java.math.BigDecimal;
+import java.util.List;
+
 public interface CourseScheduleTeacherSalaryService extends BaseService<Long, CourseScheduleTeacherSalary> {
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/14
+     * @params [vipGroup VIP课程信息,
+     * vipCourseSchedules 排课计划,
+     * onlineTeacherSalary 教师线上课酬,
+     * offlineTeacherSalary 教师线下课酬]
+     * @return int
+     * @describe 创建vip课教师课酬
+     */
+    int createCourseScheduleTeacherVipSalary(VipGroup vipGroup,
+                                             List<CourseSchedule> vipCourseSchedules,
+                                             BigDecimal onlineTeacherSalary,
+                                             BigDecimal offlineTeacherSalary);
+
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/GoodsCategoryService.java

@@ -1,6 +1,8 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.GoodsCategory;
+import com.ym.mec.biz.dal.page.GoodsCategoryQueryInfo;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface GoodsCategoryService extends BaseService<Integer, GoodsCategory> {
@@ -16,4 +18,11 @@ public interface GoodsCategoryService extends BaseService<Integer, GoodsCategory
      * @param goodsCategory
      */
     void upsetGoodsCategory(GoodsCategory goodsCategory);
+
+    /**
+     * 获取商品分类树状列表
+     * @param queryInfo
+     * @return
+     */
+    PageInfo<GoodsCategory> queryTreePage(GoodsCategoryQueryInfo queryInfo);
 }

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

@@ -3,10 +3,10 @@ package com.ym.mec.biz.service;
 import java.util.Date;
 import java.util.List;
 
-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.dto.*;
 import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface MusicGroupService extends BaseService<String, MusicGroup> {
@@ -15,7 +15,7 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @param subFeeSettingDto
 	 * @Author superzou
 	 */
-	void createGroup(SubFeeSettingDto subFeeSettingDto, Integer userId);
+	String createGroup(SubFeeSettingDto subFeeSettingDto, Integer userId);
 
 	/**
 	 * 获取学生所在乐团详情
@@ -79,4 +79,11 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @return
 	 */
 	boolean renew(String musicGroupId, Integer userId, double amount);
+
+	/**
+	 * 获取乐团列表
+	 * @param queryInfo
+	 * @return
+	 */
+	PageInfo<MusicGroup> queryMusicGroupPage(MusicGroupQueryInfo queryInfo);
 }

+ 2 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupSubjectPlanService.java

@@ -15,7 +15,7 @@ public interface MusicGroupSubjectPlanService extends BaseService<Integer, Music
      * @param musicGroupId
      * @return
      */
-    List<MusicGroupSubjectPlan> getMusicSubjectClassPlan(int musicGroupId);
+    List<MusicGroupSubjectPlan> getMusicSubjectClassPlan(String musicGroupId);
 
 
     /**
@@ -40,6 +40,5 @@ public interface MusicGroupSubjectPlanService extends BaseService<Integer, Music
      * @param musicGroupId
      * @return
      */
-    MusicGroupRegRespDto getMusicGroupRegInfo(Integer musicGroupId);
-
+    MusicGroupRegRespDto getMusicGroupRegInfo(String musicGroupId);
 }

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -49,7 +49,7 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 	 * @param actualSubjectId 科目id
 	 * @return
 	 */
-	List<StudentRegistration> getNoClassStuBySubjectId(Integer musicGroupId, Integer actualSubjectId);
+	List<StudentRegistration> getNoClassStuBySubjectId(String musicGroupId, Integer actualSubjectId);
 
 	/**
 	 * 获取乐团声部未分配学生统计
@@ -58,7 +58,7 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 	 * @param actualSubjectId
 	 * @return
 	 */
-	Integer getNoClassStuCountBySubjectId(Integer musicGroupId, Integer actualSubjectId);
+	Integer getNoClassStuCountBySubjectId(String musicGroupId, Integer actualSubjectId);
 
 	/**
 	 * 根据user_id 和 乐团id更新

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java

@@ -22,7 +22,7 @@ public interface SubjectService extends BaseService<Integer, Subject> {
      * @param musicGroupId
      * @return
      */
-    List<Subject> findSubByMusicGroupId(Integer musicGroupId);
+    List<Subject> findSubByMusicGroupId(String musicGroupId);
 
     /**
      * 分页查询科目树状列表
@@ -46,7 +46,7 @@ public interface SubjectService extends BaseService<Integer, Subject> {
      * @param musicGroupId
      * @return
      */
-    List<SubjectApplyDetailDto> findSubApplyDetail(Integer musicGroupId);
+    List<SubjectApplyDetailDto> findSubApplyDetail(String musicGroupId);
 
     /**
      * 修改、新增科目树状列表

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

@@ -3,6 +3,17 @@ package com.ym.mec.biz.service;
 import com.ym.mec.biz.dal.entity.TeacherSchool;
 import com.ym.mec.common.service.BaseService;
 
+import java.util.List;
+
 public interface TeacherSchoolService extends BaseService<Long, TeacherSchool> {
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/14
+     * @params [teacherId]
+     * @return java.util.List<com.ym.mec.biz.dal.entity.TeacherSchool>
+     * @describe 根据教师编号获取教学点
+     */
+    List<TeacherSchool> findByTeacherId(Long teacherId);
+
 }

+ 24 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -28,6 +28,7 @@ import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup> implements ClassGroupService {
@@ -66,7 +67,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public List<ClassGroup> findClassGroup(Integer musicGroupId, Integer mixClassGroupId) {
+    public List<ClassGroup> findClassGroup(String musicGroupId, Integer mixClassGroupId) {
         if (null == mixClassGroupId) {
             return classGroupDao.findAllMixClassGroup(musicGroupId);
         } else {
@@ -75,12 +76,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public List<ClassGroup> findAllNormalClassGroupByMusicGroupId(int musicGroupId) {
+    public List<ClassGroup> findAllNormalClassGroupByMusicGroupId(String musicGroupId) {
         return classGroupDao.findAllNormalClassGroupByMusicGroupId(musicGroupId);
     }
 
     @Override
-    public List<ClassGroup> findAllMixClassGroupByMusicGroupId(int musicGroupId) {
+    public List<ClassGroup> findAllMixClassGroupByMusicGroupId(String musicGroupId) {
         List<ClassGroup> allMixClassGroup = classGroupDao.findAllMixClassGroup(musicGroupId);
         for (ClassGroup mixClassGroup : allMixClassGroup) {
             mixClassGroup.setClassNames(classGroupDao.findMixClassChildClassGroupNames(mixClassGroup.getId()).getName());
@@ -89,7 +90,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public List<ClassGroup> findAllClassGroupByMusicGroup(Long musicGroupId) {
+    public List<ClassGroup> findAllClassGroupByMusicGroup(String musicGroupId) {
         List<ClassGroup> allMixClassGroup = classGroupDao.findAllClassGroupByMusicGroup(musicGroupId);
         return allMixClassGroup;
     }
@@ -361,10 +362,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 } else {
                     //获取学员乐团课的续费状态
                     MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, e.getMusicGroupId());
-                    if (musicGroupStudentFee != null) {
-                        int i = DateUtil.daysBetween(new Date(), musicGroupStudentFee.getNextPaymentDate());
-                        e.setRenewStatus(i < 8 ? 0 : 1);
-                    }
+//                    if (musicGroupStudentFee != null) {
+//                        int i = DateUtil.daysBetween(new Date(), musicGroupStudentFee.getNextPaymentDate());
+                        e.setPaymentStatus(musicGroupStudentFee.getPaymentStatus());
+//                    }
                 }
             });
         }
@@ -379,11 +380,19 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Override
     public List<ImGroupModel> queryUserGroups(Integer userId, String search) {
         List<ImGroupModel> imGroupModels = musicGroupDao.queryUserGroups(userId, search);
+        Set<String> musicGroupIds = imGroupModels.stream().map(e -> e.getId()).collect(Collectors.toSet());
+
         List<ImGroupModel> imGroupModels1 = classGroupDao.queryUserGroups(userId, search);
+
         if(imGroupModels != null && imGroupModels.size() > 0){
+            List<MusicGroup> musicGroups = musicGroupDao.queryListByIds(musicGroupIds);
+
+            List<Map<String, Integer>> musicGroupUserNums = musicGroupDao.countMusicGroupUserNum(musicGroupIds);
+            Map<String, Integer> musicGroupUserNumMap = MapUtil.convertMybatisMap(musicGroupUserNums);
             imGroupModels.forEach(e -> {
+                MusicGroup musicGroup = musicGroups.stream().filter(mg -> mg.getId().equals(e.getId())).findFirst().get();
                 //获取创建乐团的老师
-                MusicGroup musicGroup = musicGroupDao.get(e.getId());
+//                MusicGroup musicGroup = musicGroupDao.get(e.getId());
                 //获取教学老师id列表
                 Set<Integer> teachers = musicGroupDao.queryTeacherIds(e.getId());
                 teachers.add(musicGroup.getTeamTeacherId());
@@ -392,7 +401,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 teachers.add(musicGroup.getDirectorUserId());
                 teachers.removeAll(Collections.singleton(null));
                 //获取乐团群用户总数
-                e.setCount(musicGroupDao.countMusicGroupUserNum(e.getId()) + teachers.size());
+                e.setCount(musicGroupUserNumMap.get(e.getId()) + teachers.size());
                 e.setId("mg" + e.getId());
             });
         }else {
@@ -454,4 +463,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         classGroupStudentMapperService.insert(classGroupStudentMapper);
         return classGroup;
     }
+
+    @Override
+    public List<ClassGroup> findNoClassSubjects(String musicGroupId) {
+        return classGroupDao.findNoClassSubjects(musicGroupId);
+    }
 }

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

@@ -7,6 +7,7 @@ import com.ym.mec.biz.service.CourseHomeworkTemplateService;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -28,7 +29,10 @@ public class CourseHomeworkTemplateServiceImpl extends BaseServiceImpl<Integer,
 	public PageInfo<CourseHomeworkTemplate> queryPage(QueryInfo queryInfo) {
 		CourseHomeWorkTemplateQueryInfo templateQueryInfo= (CourseHomeWorkTemplateQueryInfo) queryInfo;
 		if(null!=templateQueryInfo.getCourseScheduleID()){
-			templateQueryInfo.setSubjectIDs(courseHomeworkTemplateDao.getSubjectIDs(templateQueryInfo.getCourseScheduleID()).split(","));
+			String subjectIDs = courseHomeworkTemplateDao.getSubjectIDs(templateQueryInfo.getCourseScheduleID());
+			if(!StringUtils.isEmpty(subjectIDs)) {
+				templateQueryInfo.setSubjectIDs(subjectIDs.split(","));
+			}
 		}
 		return super.queryPage(templateQueryInfo);
 	}

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

@@ -10,7 +10,6 @@ import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
-import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.enums.ParamEnum;
@@ -34,6 +33,7 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 @Service
 public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSchedule>  implements CourseScheduleService {
@@ -59,7 +59,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		}
 		TeacherAttendanceDto currentCourseDetail = courseScheduleDao.getCurrentCourseDetail(courseID);
 		currentCourseDetail.setCurrentTime(new Date());
-		currentCourseDetail.setTeacherAttendanceTimeGap(ParamEnum.TEACHER_ATTENDANCE_TIME_GAP);
+		SysConfig advance_sign_in_minutes = sysConfigDao.findByParamName("advance_sign_in_minutes");
+		currentCourseDetail.setAdvanceSignInMinutes(Integer.parseInt(advance_sign_in_minutes.getParanValue()));
+		SysConfig attendance_range = sysConfigDao.findByParamName("attendance_range");
+		currentCourseDetail.setAttendanceRange(Integer.parseInt(attendance_range.getParanValue()));
 		return currentCourseDetail;
 	}
 
@@ -195,12 +198,23 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	 * @return
 	 */
 	private void checkCourseSchedule(List<CourseSchedule> courseSchedules){
-		Map<Date, List<CourseSchedule>> collect = courseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getClassDate));
+		List<Date> classDates = courseSchedules.stream().map(CourseSchedule::getClassDate).collect(Collectors.toList());
+		List<CourseSchedule> byClassGroupAndDate = courseScheduleDao.findByClassGroupAndDate(classDates, null);
+		List<CourseSchedule> collect3 = Stream.of(courseSchedules, byClassGroupAndDate).flatMap(Collection::stream).collect(Collectors.toList());
+		Map<Date, List<CourseSchedule>> collect = collect3.stream().collect(Collectors.groupingBy(CourseSchedule::getClassDate));
 		for(Date keyDate:collect.keySet()){
 			List<CourseSchedule> currentCourses=collect.get(keyDate);
 			Map<Date, List<CourseSchedule>> collect1 = currentCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getStartClassTime));
-			if(currentCourses.size()==collect1.size()){
+			if(currentCourses.size()==1&&currentCourses.size()==collect1.size()){
 				continue;
+			}else if(currentCourses.size()>1&&currentCourses.size()==collect1.size()){
+				ArrayList<CourseSchedule> collect2 = currentCourses
+						.stream()
+						.collect(Collectors.collectingAndThen(Collectors.toCollection(()
+								-> new TreeSet<CourseSchedule>(Comparator.comparing(o -> o.getStartClassTime() + "-" + o.getEndClassTime()))), ArrayList::new));
+				if(collect2.size()!=currentCourses.size()){
+					throw new BizException("课程安排上存在在同一时间开课的课程");
+				}
 			}else{
 				for(Date keyDate2:collect1.keySet()){
 					List<CourseSchedule> currentCourses1=collect1.get(keyDate2);
@@ -223,20 +237,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				}
 			}
 		}
-		//课次创建
-//		Map<Integer, List<CourseSchedule>> classGroupByID = courseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getClassGroupId));
-//		List<Long> ids=new ArrayList<>();
-//		for (Integer key:classGroupByID.keySet()){
-//			ids.add(Long.valueOf(key));
-//		}
-//		Map<Integer, Integer> maxClassTimes = convertToMap(courseScheduleDao.getMaxClassTimeByClassIds(ids));
-//		courseSchedules.clear();
-//		for (Integer key:classGroupByID.keySet()){
-//			Integer maxClassTime = null == maxClassTimes.get(key) ? 0 : maxClassTimes.get(key);
-//			for(CourseSchedule courseSchedule:classGroupByID.get(key)){
-//				courseSchedules.add(courseSchedule);
-//			}
-//		}
 	}
 
 	/**
@@ -353,7 +353,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		courseScheduleDao.update(courseSchedules.get(1));
 	}
 
-    @Override
+	@Override
+	public void courseSwapWithDay(Date day1, Date day2) {
+
+	}
+
+	@Override
     public List<CourseSchedule> findClassGroupCourseSchedules(List classGroupList) {
 		return courseScheduleDao.findClassGroupCourseSchedules(classGroupList);
     }

+ 105 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java

@@ -1,23 +1,124 @@
 package com.ym.mec.biz.service.impl;
 
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
+import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
+import com.ym.mec.biz.dal.dao.VipGroupDao;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
+import com.ym.mec.biz.dal.entity.VipGroup;
+import com.ym.mec.biz.dal.entity.VipGroupActivity;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
+import com.ym.mec.biz.dal.enums.VipGroupActivityTypeEnum;
 import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Long, CourseScheduleStudentPayment>  implements CourseScheduleStudentPaymentService {
 	
 	@Autowired
 	private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
+	@Autowired
+	private VipGroupDao vipGroupDao;
+	@Autowired
+	private VipGroupActivityDao vipGroupActivityDao;
+	@Autowired
+	private CourseScheduleDao courseScheduleDao;
 
 	@Override
 	public BaseDAO<Long, CourseScheduleStudentPayment> getDAO() {
 		return courseScheduleStudentPaymentDao;
 	}
-	
+
+	@Override
+	public int createCourseScheduleStudentPaymentForVipGroup(Long vipGroupId, Long userId) {
+		VipGroup vipGroupApplyBaseInfoDto=vipGroupDao.get(vipGroupId);
+
+		if(Objects.isNull(vipGroupApplyBaseInfoDto)){
+			throw new BizException("未找到相关vip课程");
+		}
+
+		//获取活动信息
+		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroupId.intValue());
+
+		List<CourseSchedule> vipGroupCourseSchedules=courseScheduleDao.findVipGroupCourseSchedules(vipGroupId);
+		if(CollectionUtils.isEmpty(vipGroupCourseSchedules)){
+			throw new BizException("为获取到排课信息");
+		}
+		List<CourseScheduleStudentPayment> courseScheduleStudentPayments=new ArrayList<>();
+		Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroupByTeachMode = vipGroupCourseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
+		for(TeachModeEnum teachModeEnum:courseScheduleGroupByTeachMode.keySet()){
+			List<CourseSchedule> courseSchedules = courseScheduleGroupByTeachMode.get(teachModeEnum)
+					.stream()
+					.sorted(Comparator.comparing(CourseSchedule::getStartClassTime)).collect(Collectors.toList());
+			for(int i=0;i<courseSchedules.size();i++) {
+				//创建学生课程应缴费记录
+				CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+				courseScheduleStudentPayment.setCourseScheduleId(courseSchedules.get(i).getId());
+
+				if (teachModeEnum == TeachModeEnum.ONLINE) {
+					//学生线上单节课应缴费计算
+					switch (vipGroupActivity.getType()) {
+						case BASE_ACTIVITY:
+							courseScheduleStudentPayment.setExpectPrice(vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice());
+							break;
+						case DISCOUNT:
+							courseScheduleStudentPayment.setExpectPrice(
+									vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice().multiply(
+											new BigDecimal(vipGroupActivity.getAttribute1())
+									)
+							);
+							break;
+						case GIVE_CLASS:
+							if (vipGroupActivity.getType() == VipGroupActivityTypeEnum.GIVE_CLASS
+									&& vipGroupApplyBaseInfoDto.getGiveTeachMode() == teachModeEnum
+									&& i >= Integer.parseInt(vipGroupActivity.getAttribute1())) {
+								courseScheduleStudentPayment.setExpectPrice(new BigDecimal(0));
+							} else {
+								courseScheduleStudentPayment.setExpectPrice(vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice());
+							}
+							break;
+						default:
+							throw new BizException("活动类型错误!");
+					}
+				}else{
+					//学生线下单节课应缴费计算
+					switch (vipGroupActivity.getType()) {
+						case BASE_ACTIVITY:
+							courseScheduleStudentPayment.setExpectPrice(vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice());
+							break;
+						case DISCOUNT:
+							courseScheduleStudentPayment.setExpectPrice(
+									vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice().multiply(
+											new BigDecimal(vipGroupActivity.getAttribute1())
+									)
+							);
+							break;
+						case GIVE_CLASS:
+							if (vipGroupActivity.getType() == VipGroupActivityTypeEnum.GIVE_CLASS
+									&& vipGroupApplyBaseInfoDto.getGiveTeachMode() == teachModeEnum
+									&& i >= Integer.parseInt(vipGroupActivity.getAttribute1())) {
+								courseScheduleStudentPayment.setExpectPrice(new BigDecimal(0));
+							} else {
+								courseScheduleStudentPayment.setExpectPrice(vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice());
+							}
+							break;
+						default:
+							throw new BizException("活动类型错误!");
+					}
+					courseScheduleStudentPayments.add(courseScheduleStudentPayment);
+				}
+			}
+		}
+		return courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
+	}
 }

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

@@ -1,23 +1,110 @@
 package com.ym.mec.biz.service.impl;
 
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
+import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
-import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.dao.TeacherDefaultVipGroupSalaryDao;
+import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
+import com.ym.mec.biz.dal.dto.VipGroupSalarySettlementDto;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
+import com.ym.mec.biz.dal.enums.TeachTypeEnum;
+import com.ym.mec.biz.dal.enums.VipGroupActivityTypeEnum;
 import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long, CourseScheduleTeacherSalary>  implements CourseScheduleTeacherSalaryService {
 	
 	@Autowired
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+	@Autowired
+	private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
+	@Autowired
+	private VipGroupActivityDao vipGroupActivityDao;
 
 	@Override
 	public BaseDAO<Long, CourseScheduleTeacherSalary> getDAO() {
 		return courseScheduleTeacherSalaryDao;
 	}
-	
+
+	@Override
+	public int createCourseScheduleTeacherVipSalary(VipGroup vipGroup,
+													List<CourseSchedule> vipCourseSchedules,
+													BigDecimal onlineTeacherSalary,
+													BigDecimal offlineTeacherSalary) {
+		TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId().longValue(),
+				vipGroup.getVipGroupCategoryId());
+
+		//获取活动信息
+		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
+		VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
+
+		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries=new ArrayList<>();
+		Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroupByTeachMode = vipCourseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
+
+		for(TeachModeEnum teachModeEnum:courseScheduleGroupByTeachMode.keySet()){
+			List<CourseSchedule> courseSchedules = courseScheduleGroupByTeachMode.get(teachModeEnum)
+					.stream()
+					.sorted(Comparator.comparing(CourseSchedule::getStartClassTime)).collect(Collectors.toList());
+			for(int i=0;i<courseSchedules.size();i++){
+				//创建教师课程薪水记录
+				CourseScheduleTeacherSalary courseScheduleTeacherSalary=new CourseScheduleTeacherSalary();
+				courseScheduleTeacherSalary.setCourseScheduleId(courseSchedules.get(i).getId());
+				courseScheduleTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
+				courseScheduleTeacherSalary.setUserId(vipGroup.getUserId());
+
+				if(teachModeEnum==TeachModeEnum.ONLINE){
+					if(vipGroupActivity.getType()== VipGroupActivityTypeEnum.GIVE_CLASS
+							&&vipGroup.getGiveTeachMode()==teachModeEnum
+							&&i>=Integer.parseInt(vipGroupActivity.getAttribute1())
+							&&"0".equals(vipGroupActivity.getGiveClassPaySalaryFlag())){
+						courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(0));
+					}else {
+						//教师课酬线上单课酬计算
+						switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
+							case TEACHER_DEFAULT:
+								courseScheduleTeacherSalary.setExpectSalary(teacherDefaultVipGroupSalary.getOnlineClassesSalary());
+								break;
+							case RATIO_DISCOUNT:
+								courseScheduleTeacherSalary.setExpectSalary(onlineTeacherSalary.multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()));
+								break;
+							case FIXED_SALARY:
+								courseScheduleTeacherSalary.setExpectSalary(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue());
+								break;
+							default:
+								throw new BizException("未指定课酬结算标准!");
+						}
+					}
+				}else{
+					//教师线下单课酬计算
+					switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
+						case TEACHER_DEFAULT:
+							courseScheduleTeacherSalary.setExpectSalary(teacherDefaultVipGroupSalary.getOfflineClassesSalary());
+							break;
+						case RATIO_DISCOUNT:
+							courseScheduleTeacherSalary.setExpectSalary(offlineTeacherSalary.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()));
+							break;
+						case FIXED_SALARY:
+							courseScheduleTeacherSalary.setExpectSalary(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue());
+							break;
+						default:
+							throw new BizException("未指定课酬结算标准!");
+					}
+				}
+				courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
+			}
+		}
+		return courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
+	}
 }

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsCategoryServiceImpl.java

@@ -2,8 +2,12 @@ package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.GoodsCategoryDao;
 import com.ym.mec.biz.dal.entity.GoodsCategory;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.page.GoodsCategoryQueryInfo;
 import com.ym.mec.biz.service.GoodsCategoryService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,6 +48,32 @@ public class GoodsCategoryServiceImpl extends BaseServiceImpl<Integer, GoodsCate
 		});
 	}
 
+	@Override
+	public PageInfo<GoodsCategory> queryTreePage(GoodsCategoryQueryInfo queryInfo) {
+		PageInfo<GoodsCategory> pageInfo = queryPage(queryInfo);
+		for (GoodsCategory goodsCategory:pageInfo.getRows()) {
+			goodsCategory = getTree(goodsCategory,queryInfo.getStatus());
+		}
+		return pageInfo;
+	}
+
+
+	private GoodsCategory getTree(GoodsCategory goodsCategory, YesOrNoEnum yesOrNoEnum){
+		//得到根节点对象
+		//获取子节点list
+		List<GoodsCategory> goodsCategories = goodsCategoryDao.findByParentId(goodsCategory.getId(),yesOrNoEnum);
+		//如果存在子节点
+		if(goodsCategories != null && goodsCategories.size() > 0) {
+			//将子节点list放入父节点对象
+			goodsCategory.setGoodsCategories(goodsCategories);
+			//遍历子节点....
+			for (GoodsCategory subject : goodsCategories) {
+				getTree(subject,yesOrNoEnum);
+			}
+		}
+		return goodsCategory;
+	}
+
 	private Integer upset(GoodsCategory goodsCategory, Integer parentId){
 		if(parentId != null){
 			goodsCategory.setParentId(parentId);

+ 111 - 74
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1,43 +1,31 @@
 package com.ym.mec.biz.service.impl;
 
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
-
-import com.ym.mec.biz.dal.entity.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
-import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
-import com.ym.mec.biz.dal.dao.MusicGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao;
-import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
+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.MusicGroupsDto;
 import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
-import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
-import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+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.util.collection.MapUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> implements MusicGroupService {
@@ -45,6 +33,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 	@Autowired
 	private MusicGroupDao musicGroupDao;
 	@Autowired
+	private ChargeTypeDao chargeTypeDao;
+	@Autowired
+	private TeacherDao teacherDao;
+	@Autowired
+	private IdGeneratorService idGeneratorService;
+	@Autowired
+	private SchoolDao schoolDao;
+	@Autowired
 	private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
 	@Autowired
 	private MusicGroupPaymentEntitiesDao musicGroupPaymentEntitiesDao;
@@ -76,58 +72,57 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void createGroup(SubFeeSettingDto subFeeSettingDto, Integer userId) {
+	public String createGroup(SubFeeSettingDto subFeeSettingDto, Integer userId) {
 		MusicGroup musicGroup = subFeeSettingDto.getMusicGroup();
 		List<MusicGroupPaymentEntities> musicGroupPaymentEntities = subFeeSettingDto.getMusicGroupPaymentEntities();
 		List<MusicGroupSubjectGoodsGroup> musicGroupSubjectGoodsGroups = subFeeSettingDto.getMusicGroupSubjectGoodsGroups();
 		List<MusicGroupSubjectPlan> musicGroupSubjectPlans = subFeeSettingDto.getMusicGroupSubjectPlans();
-		if (musicGroup == null || musicGroupPaymentEntities == null || musicGroupSubjectGoodsGroups == null || musicGroupSubjectPlans == null) {
-			String musicGroupId = UUID.randomUUID().toString();
-			musicGroup.setId(musicGroupId);
-			// 保存乐团基本信息
-			musicGroupDao.insert(musicGroup);
-			// 保存乐团付费主体列表
-			musicGroupPaymentEntities.forEach(e -> {
-				e.setMusicGroupId(musicGroupId);
-				musicGroupPaymentEntitiesDao.insert(e);
-			});
-			// 保存学员付费周期
-			List<Integer> months = subFeeSettingDto.getMonths();
-			if (months != null && months.size() > 0) {
-				MusicGroupPaymentCalender mg;
-				for (Integer month : months) {
-					mg = new MusicGroupPaymentCalender();
-					mg.setMusicGroupId(musicGroupId);
-					mg.setPaymentMonth(month);
-					musicGroupPaymentCalenderDao.insert(mg);
-				}
+		String musicGroupId = idGeneratorService.generatorId()+"";
+		musicGroup.setId(musicGroupId);
+		// 保存乐团基本信息
+		musicGroupDao.insert(musicGroup);
+		// 保存乐团付费主体列表
+		musicGroupPaymentEntities.forEach(e -> {
+			e.setMusicGroupId(musicGroupId);
+			musicGroupPaymentEntitiesDao.insert(e);
+		});
+		// 保存学员付费周期
+		List<Integer> months = subFeeSettingDto.getMonths();
+		if (months != null && months.size() > 0) {
+			MusicGroupPaymentCalender mg;
+			for (Integer month : months) {
+				mg = new MusicGroupPaymentCalender();
+				mg.setMusicGroupId(musicGroupId);
+				mg.setPaymentMonth(month);
+				musicGroupPaymentCalenderDao.insert(mg);
 			}
-			// 保存乐团声部规划
-			if (musicGroupSubjectPlans == null) {
-				musicGroupSubjectPlans = new ArrayList<MusicGroupSubjectPlan>();
-			}
-			musicGroupSubjectPlans.forEach(e -> {
-				e.setMusicGroupId(musicGroupId);
-				musicGroupSubjectPlanDao.insert(e);
-			});
-			// 保存乐团声部商品规划
-			if (musicGroupSubjectGoodsGroups == null) {
-				musicGroupSubjectGoodsGroups = new ArrayList<MusicGroupSubjectGoodsGroup>();
-			}
-			musicGroupSubjectGoodsGroups.forEach(e -> {
-				e.setMusicGroupId(musicGroupId);
-				musicGroupSubjectGoodsGroupDao.insert(e);
-			});
-			// 新增聊天群
-//			ImGroupModel imGroupModel = new ImGroupModel(musicGroupId, musicGroup.getName());
-			// 教务老师和运营主管加入群组
-			ImGroupMember[] imGroupMembers = { new ImGroupMember(musicGroup.getTeamTeacherId().toString()),
-					new ImGroupMember(musicGroup.getEducationalTeacherId().toString()) };
-			// 创建群组
-			imFeignService.groupCreate(new ImGroupModel(musicGroupId, imGroupMembers, musicGroup.getName()));
-			// 记录创建日志
-			musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "提交建团申请", userId, ""));
 		}
+		// 保存乐团声部规划
+		if (musicGroupSubjectPlans == null) {
+			musicGroupSubjectPlans = new ArrayList<>();
+		}
+		musicGroupSubjectPlans.forEach(e -> {
+			e.setMusicGroupId(musicGroupId);
+			musicGroupSubjectPlanDao.insert(e);
+		});
+		// 保存乐团声部商品规划
+		if (musicGroupSubjectGoodsGroups == null) {
+			musicGroupSubjectGoodsGroups = new ArrayList<>();
+		}
+		musicGroupSubjectGoodsGroups.forEach(e -> {
+			e.setMusicGroupId(musicGroupId);
+			musicGroupSubjectGoodsGroupDao.insert(e);
+		});
+		// 新增聊天群
+//			ImGroupModel imGroupModel = new ImGroupModel(musicGroupId, musicGroup.getName());
+		// 教务老师和运营主管加入群组
+		ImGroupMember[] imGroupMembers = { new ImGroupMember(musicGroup.getTeamTeacherId().toString()),
+				new ImGroupMember(musicGroup.getEducationalTeacherId().toString()) };
+		// 创建群组
+		imFeignService.groupCreate(new ImGroupModel(musicGroupId, imGroupMembers, musicGroup.getName()));
+		// 记录创建日志
+		musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "提交建团申请", userId, ""));
+		return musicGroupId;
 	}
 
 	@Override
@@ -273,7 +268,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 	public boolean quitMusicGroup(String musicGroupId, Integer userId) {
 		MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
 		if (musicGroup == null) {
-			throw new BizException("乐团找不到");
+			throw new BizException("乐团不存在");
 		}
 		
 		classGroupStudentMapperDao.updateUserStatusByMusicGroupId(musicGroupId, userId, ClassGroupStudentStatusEnum.QUIT);
@@ -285,4 +280,46 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 	public boolean renew(String musicGroupId, Integer userId, double amount) {
 		return true;
 	}
+
+	@Override
+	public PageInfo<MusicGroup> queryMusicGroupPage(MusicGroupQueryInfo queryInfo) {
+		PageInfo<MusicGroup> musicGroupPageInfo = queryPage(queryInfo);
+		List<MusicGroup> musicGroupList = musicGroupPageInfo.getRows();
+		//获取学校编号列表
+		Set<Integer> schoolIds = musicGroupList.stream().map(e -> e.getSchoolId()).collect(Collectors.toSet());
+		List<Map<Integer,String>> schoolNames =  schoolDao.queryNameByIds(schoolIds);
+		//获取相关学校名称map
+		Map<Integer,String> schoolNameMap = MapUtil.convertMybatisMap(schoolNames);
+
+		//获取教务老师编号列表
+		Set<Integer> educationalTeacherIds = musicGroupList.stream().map(e -> e.getEducationalTeacherId()).collect(Collectors.toSet());
+		//获取相关老师的名字
+		List<Map<Integer,String>> educationalTeacherNames =  teacherDao.queryNameByIds(educationalTeacherIds);
+		Map<Integer,String> educationalTeacherNameMap = MapUtil.convertMybatisMap(educationalTeacherNames);
+
+		//获取运营主管编号列表
+		Set<Integer> teamTeacherIds = musicGroupList.stream().map(e -> e.getTeamTeacherId()).collect(Collectors.toSet());
+		List<Map<Integer,String>> teamTeacherNames =  teacherDao.queryNameByIds(teamTeacherIds);
+		Map<Integer,String> teamTeacherNameMap = MapUtil.convertMybatisMap(teamTeacherNames);
+
+		//获取乐团编号列表
+		Set<String> musicGroupIds = musicGroupList.stream().map(e -> e.getId()).collect(Collectors.toSet());
+		//统计乐团在读人数
+		List<Map<String,Long>> payNums =  musicGroupDao.countPayNum(musicGroupIds);
+		Map<String,Long> payNumMap = MapUtil.convertMybatisMap(payNums);
+
+		//获取收费类型编号列表
+		Set<Integer> chargeTypeIds = musicGroupList.stream().map(e -> e.getChargeTypeId()).collect(Collectors.toSet());
+		List<Map<Integer,String>> chargeTypeNames =  chargeTypeDao.queryNameByIds(chargeTypeIds);
+		Map<Integer,String> chargeTypeNameMap = MapUtil.convertMybatisMap(chargeTypeNames);
+
+		musicGroupList.forEach(e->{
+			e.setSchoolName(schoolNameMap.get(e.getSchoolId()));
+			e.setEducationalTeacherName(educationalTeacherNameMap.get(e.getEducationalTeacherId()));
+			e.setTeamTeacherName(teamTeacherNameMap.get(e.getTeamTeacherId()));
+			e.setPayNum(payNumMap.get(e.getId())==null?0:payNumMap.get(e.getId()).intValue());
+			e.setChargeTypeName(chargeTypeNameMap.get(e.getChargeTypeId()));
+		});
+		return musicGroupPageInfo;
+	}
 }

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

@@ -43,7 +43,7 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
     }
 
     @Override
-    public List<MusicGroupSubjectPlan> getMusicSubjectClassPlan(int musicGroupId) {
+    public List<MusicGroupSubjectPlan> getMusicSubjectClassPlan(String musicGroupId) {
         List<MusicGroupSubjectPlan> musicSubjectClassPlans = musicGroupSubjectPlanDao.getMusicSubjectClassPlan(musicGroupId);
         for (MusicGroupSubjectPlan musicSubjectClassPlan : musicSubjectClassPlans) {
             Integer noClassStuCount = studentRegistrationService.getNoClassStuCountBySubjectId(musicGroupId, musicSubjectClassPlan.getSubjectId());
@@ -88,11 +88,11 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
     }
 
     @Override
-    public MusicGroupRegRespDto getMusicGroupRegInfo(Integer musicGroupId) {
+    public MusicGroupRegRespDto getMusicGroupRegInfo(String musicGroupId) {
         MusicGroupRegRespDto musicGroupRegResp = new MusicGroupRegRespDto();
 
         //乐团信息
-        MusicGroup musicGroup = musicGroupService.get(musicGroupId.toString());
+        MusicGroup musicGroup = musicGroupService.get(musicGroupId);
         musicGroupRegResp.setMusicGroupName(musicGroup.getName());
         //声部信息
         List<Subject> subjectList = subjectService.findSubByMusicGroupId(musicGroupId);

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

@@ -102,12 +102,12 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
-    public List<StudentRegistration> getNoClassStuBySubjectId(Integer musicGroupId, Integer actualSubjectId) {
+    public List<StudentRegistration> getNoClassStuBySubjectId(String musicGroupId, Integer actualSubjectId) {
         return studentRegistrationDao.getNoClassStuBySubjectId(musicGroupId, actualSubjectId);
     }
 
     @Override
-    public Integer getNoClassStuCountBySubjectId(Integer musicGroupId, Integer actualSubjectId) {
+    public Integer getNoClassStuCountBySubjectId(String musicGroupId, Integer actualSubjectId) {
         return studentRegistrationDao.getNoClassStuCountBySubjectId(musicGroupId, actualSubjectId);
     }
 

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

@@ -22,6 +22,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject>  implements SubjectService {
@@ -41,7 +42,7 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject>  imple
     }
 
     @Override
-    public List<Subject> findSubByMusicGroupId(Integer musicGroupId) {
+    public List<Subject> findSubByMusicGroupId(String musicGroupId) {
         return subjectDao.findSubByMusicGroupId(musicGroupId);
     }
 
@@ -60,8 +61,10 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject>  imple
     }
 
     @Override
-    public List<SubjectApplyDetailDto> findSubApplyDetail(Integer musicGroupId) {
+    public List<SubjectApplyDetailDto> findSubApplyDetail(String musicGroupId) {
         List<SubjectApplyDetailDto> subApplyDetail = subjectDao.findSubApplyDetail(musicGroupId);
+        List<Integer> subjectIds = subApplyDetail.stream().map(e -> e.getSubjectId()).collect(Collectors.toList());
+
         subApplyDetail.forEach(detail ->{
             detail.setPayNum(studentRegistrationDao.countPayNum(musicGroupId,detail.getSubjectId()));
         });

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

@@ -65,7 +65,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(user.getId().longValue(),teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId());
 
 		if(Objects.isNull(teacherAttendance)){
-			if(teacherSignOutDto.getTeacherAttendanceInfo().getStatus()==SignStatusEnum.YES_QUIT){
+			if(teacherSignOutDto.getTeacherAttendanceInfo().getStatus()==SignStatusEnum.SIGN_OUT){
 				throw new BizException("该课程还未签到,不能进行签退操作!");
 			}
 			teacherAttendance=teacherSignOutDto.getTeacherAttendanceInfo();
@@ -79,7 +79,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		teacherAttendance.setMusicGroupId(currentCourseDetail.getMusicGroupId());
 		teacherAttendance.setClassGroupId(currentCourseDetail.getClassId());
 		Date date = new Date();
-		if(teacherAttendance.getStatus()!= SignStatusEnum.YES_QUIT){
+		if(teacherAttendance.getStatus()!= SignStatusEnum.SIGN_OUT){
 			Long timeGap=(date.getTime()-currentCourseDetail.getStartClassTime().getTime())/1000/60;
 			if(timeGap<= ParamEnum.TEACHER_ATTENDANCE_TIME_GAP.getCode()){
 				teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
@@ -100,7 +100,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			teacherAttendanceDao.update(teacherAttendance);
 		}
 		courseScheduleDao.update(courseSchedule);
-		if(teacherAttendance.getStatus()==SignStatusEnum.YES_QUIT){
+		if(teacherAttendance.getStatus()==SignStatusEnum.SIGN_OUT){
 			//更新课次
 			ClassGroup classGroup=new ClassGroup();
 			classGroup.setId(currentCourseDetail.getClassId().intValue());

+ 12 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherSchoolServiceImpl.java

@@ -4,11 +4,15 @@ import com.ym.mec.biz.dal.dao.TeacherSchoolDao;
 import com.ym.mec.biz.dal.entity.TeacherSchool;
 import com.ym.mec.biz.service.TeacherSchoolService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Objects;
+
 @Service
 public class TeacherSchoolServiceImpl extends BaseServiceImpl<Long, TeacherSchool> implements TeacherSchoolService {
 	
@@ -19,5 +23,12 @@ public class TeacherSchoolServiceImpl extends BaseServiceImpl<Long, TeacherSchoo
 	public BaseDAO<Long, TeacherSchool> getDAO() {
 		return teacherSchoolDao;
 	}
-	
+
+	@Override
+	public List<TeacherSchool> findByTeacherId(Long teacherId) {
+		if(Objects.isNull(teacherId)){
+			throw new BizException("请指定教师");
+		}
+		return teacherSchoolDao.findByTeacherId(teacherId);
+	}
 }

+ 11 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -104,10 +104,18 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 		List<ImGroupModel> imGroupModels =  musicGroupDao.queryTeacherGroups(userId,search);
 		//获取教师所在班级列表
 		List<ImGroupModel> imGroupModels1 =  classGroupDao.queryTeacherGroups(userId,search);
+
+
+//		musicGroupDao.countMusicGroupUserNum();
 		if(imGroupModels != null && imGroupModels.size() > 0){
+			Set<String> musicGroupIds = imGroupModels.stream().map(e -> e.getId()).collect(Collectors.toSet());
+			List<MusicGroup> musicGroups = musicGroupDao.queryListByIds(musicGroupIds);
+			List<Map<String, Integer>> musicGroupUserNums = musicGroupDao.countMusicGroupUserNum(musicGroupIds);
+			Map<String, Integer> musicGroupUserNumMap = MapUtil.convertMybatisMap(musicGroupUserNums);
 			imGroupModels.forEach(e -> {
+				MusicGroup musicGroup = musicGroups.stream().filter(mg -> mg.getId().equals(e.getId())).findFirst().get();
 				//获取创建乐团的老师
-				MusicGroup musicGroup = musicGroupDao.get(e.getId());
+//				MusicGroup musicGroup = musicGroupDao.get(e.getId());
 				//获取教学老师id列表
 				Set<Integer> teachers = musicGroupDao.queryTeacherIds(e.getId());
 				teachers.add(musicGroup.getTeamTeacherId());
@@ -116,7 +124,8 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 				teachers.add(musicGroup.getDirectorUserId());
 				teachers.removeAll(Collections.singleton(null));
 				//获取乐团群用户总数
-				Integer count = musicGroupDao.countMusicGroupUserNum(e.getId());
+				Integer count = musicGroupUserNumMap.get(e.getId());
+//				Integer count = musicGroupDao.countMusicGroupUserNum(e.getId());
 				int num = count == null?0:count;
 				e.setCount(teachers.size() + num);
 				e.setId("mg" + e.getId());

+ 86 - 175
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -8,9 +8,7 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.*;
-import com.ym.mec.biz.service.CourseScheduleService;
-import com.ym.mec.biz.service.SysUserCashAccountService;
-import com.ym.mec.biz.service.VipGroupService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupModel;
@@ -68,14 +66,17 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	private SysUserCashAccountDetailDao sysUserCashAccountDetailDao;
     @Autowired
 	private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao;
-    @Autowired
-	private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
+
     @Autowired
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
     @Autowired
 	private ImFeignService imFeignService;
     @Autowired
 	private SubjectDao subjectDao;
+    @Autowired
+	private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
+    @Autowired
+	private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
 
 	@Override
 	public BaseDAO<Long, VipGroup> getDAO() {
@@ -107,8 +108,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
         //获取活动信息
         VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupActivityId().intValue());
-		VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
-		
+
 		//生成vip课信息
 		VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto=vipGroup.getVipGroupApplyBaseInfo();
 		List<String> bySubIds = subjectDao.findBySubIds(vipGroupApplyBaseInfoDto.getSubjectIdList());
@@ -119,6 +119,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		vipGroupApplyBaseInfoDto.setTotalPrice(countVipGroupPredictFee(vipGroupApplyBaseInfoDto,
 				vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice(),
 				vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice()).get("totalPrice"));
+		vipGroupApplyBaseInfoDto.setStatus(VipGroupStatusEnum.APPLYING);
 		vipGroupDao.insert(vipGroupApplyBaseInfoDto);
 
 		//获取vip课类型信息
@@ -167,131 +168,18 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
                 &&courseSchedule.getStartClassTime().before(vipGroupActivity.getCoursesStartTime())){
 		        throw new BizException("课时安排时间超出范围!");
             }
+		    courseSchedule.setTeacherId(vipGroupApplyBaseInfoDto.getUserId().longValue());
+			courseSchedule.setStatus(CourseStatusEnum.NOT_START);
 		    courseSchedule.setType(CourseSchedule.CourseScheduleType.VIP);
 			courseSchedule.setClassGroupId(classGroup.getId());
 		});
 		courseScheduleService.batchAddCourseSchedule(vipGroup.getCourseSchedules());
 
-		//创建老师与学生费用相关记录
-		TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroupApplyBaseInfoDto.getUserId().longValue(),
-				vipGroupApplyBaseInfoDto.getVipGroupCategoryId());
-
-		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries=new ArrayList<>();
-		List<CourseScheduleStudentPayment> courseScheduleStudentPayments=new ArrayList<>();
-		Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroupByTeachMode = vipGroup.getCourseSchedules().stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
-		for(TeachModeEnum teachModeEnum:courseScheduleGroupByTeachMode.keySet()){
-			List<CourseSchedule> courseSchedules = courseScheduleGroupByTeachMode.get(teachModeEnum)
-					.stream()
-					.sorted(Comparator.comparing(CourseSchedule::getStartClassTime)).collect(Collectors.toList());
-			for(int i=0;i<courseSchedules.size();i++){
-				//创建教师课程薪水记录
-				CourseScheduleTeacherSalary courseScheduleTeacherSalary=new CourseScheduleTeacherSalary();
-				courseScheduleTeacherSalary.setCourseScheduleId(courseSchedules.get(i).getId());
-				courseScheduleTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
-				courseScheduleTeacherSalary.setUserId(vipGroupApplyBaseInfoDto.getUserId());
-
-				//创建学生课程应缴费记录
-				CourseScheduleStudentPayment courseScheduleStudentPayment=new CourseScheduleStudentPayment();
-				courseScheduleStudentPayment.setCourseScheduleId(courseSchedules.get(i).getId());
-
-				if(teachModeEnum==TeachModeEnum.ONLINE){
-					if(vipGroupActivity.getType()==VipGroupActivityTypeEnum.GIVE_CLASS
-							&&vipGroupApplyBaseInfoDto.getGiveTeachMode()==teachModeEnum
-							&&i>=Integer.parseInt(vipGroupActivity.getAttribute1())
-							&&"0".equals(vipGroupActivity.getGiveClassPaySalaryFlag())){
-						courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(0));
-					}else {
-						//教师课酬线上单课酬计算
-						switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
-							case TEACHER_DEFAULT:
-								courseScheduleTeacherSalary.setExpectSalary(teacherDefaultVipGroupSalary.getOnlineClassesSalary());
-								break;
-							case RATIO_DISCOUNT:
-								courseScheduleTeacherSalary.setExpectSalary(vipGroupApplyBaseInfoDto
-										.getOnlineTeacherSalary()
-										.multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()));
-								break;
-							case FIXED_SALARY:
-								courseScheduleTeacherSalary.setExpectSalary(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue());
-								break;
-							default:
-								throw new BizException("未指定课酬结算标准!");
-						}
-					}
-
-					//学生线上单节课应缴费计算
-					switch (vipGroupActivity.getType()){
-						case BASE_ACTIVITY:
-							courseScheduleStudentPayment.setExpectPrice(vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice());
-							break;
-						case DISCOUNT:
-							courseScheduleStudentPayment.setExpectPrice(
-									vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice().multiply(
-											new BigDecimal(vipGroupActivity.getAttribute1())
-									)
-							);
-							break;
-						case GIVE_CLASS:
-							if(vipGroupActivity.getType()==VipGroupActivityTypeEnum.GIVE_CLASS
-									&&vipGroupApplyBaseInfoDto.getGiveTeachMode()==teachModeEnum
-									&&i>=Integer.parseInt(vipGroupActivity.getAttribute1())){
-								courseScheduleStudentPayment.setExpectPrice(new BigDecimal(0));
-							}else {
-								courseScheduleStudentPayment.setExpectPrice(vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice());
-							}
-							break;
-						default:
-							throw new BizException("活动类型错误!");
-					}
-				}else{
-					//教师线下单课酬计算
-					switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
-						case TEACHER_DEFAULT:
-							courseScheduleTeacherSalary.setExpectSalary(teacherDefaultVipGroupSalary.getOfflineClassesSalary());
-							break;
-						case RATIO_DISCOUNT:
-							courseScheduleTeacherSalary.setExpectSalary(vipGroupApplyBaseInfoDto
-									.getOfflineTeacherSalary()
-									.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()));
-							break;
-						case FIXED_SALARY:
-							courseScheduleTeacherSalary.setExpectSalary(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue());
-							break;
-						default:
-							throw new BizException("未指定课酬结算标准!");
-					}
-				}
-
-				//学生线下单节课应缴费计算
-				switch (vipGroupActivity.getType()){
-					case BASE_ACTIVITY:
-						courseScheduleStudentPayment.setExpectPrice(vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice());
-						break;
-					case DISCOUNT:
-						courseScheduleStudentPayment.setExpectPrice(
-								vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice().multiply(
-										new BigDecimal(vipGroupActivity.getAttribute1())
-								)
-						);
-						break;
-					case GIVE_CLASS:
-						if(vipGroupActivity.getType()==VipGroupActivityTypeEnum.GIVE_CLASS
-								&&vipGroupApplyBaseInfoDto.getGiveTeachMode()==teachModeEnum
-								&&i>=Integer.parseInt(vipGroupActivity.getAttribute1())){
-							courseScheduleStudentPayment.setExpectPrice(new BigDecimal(0));
-						}else {
-							courseScheduleStudentPayment.setExpectPrice(vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice());
-						}
-						break;
-					default:
-						throw new BizException("活动类型错误!");
-				}
-				courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
-				courseScheduleStudentPayments.add(courseScheduleStudentPayment);
-			}
-		}
-		courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
-		courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
+		//创建老师单节课课酬信息
+		courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(vipGroupApplyBaseInfoDto,
+				vipGroup.getCourseSchedules(),
+				vipGroupApplyBaseInfoDto.getOnlineTeacherSalary(),
+				vipGroupApplyBaseInfoDto.getOfflineTeacherSalary());
 	}
 
 	@Override
@@ -428,7 +316,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(Objects.isNull(vipGroupId)){
 			throw new BizException("请指定vip课程");
 		}
-		return vipGroupDao.getVipGroupDetail(vipGroupId);
+        StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(vipGroupId);
+        vipGroupDetail.setNumberOfClasses(vipGroupDao.countTeacherVipGroups(vipGroupDetail.getTeacherId().longValue()));
+        return vipGroupDetail;
 	}
 
 	@Override
@@ -474,52 +364,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         return new VipGroupCostCountDto(null,teacherSalary);
     }
 
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void buyVipGroup(VipGroupBuyParamsDto vipGroupBuyParams) {
-	    SysUser user = sysUserFeignService.queryUserInfo();
-        VipGroup vipGroup = vipGroupDao.get(vipGroupBuyParams.getVipGroupId());
-
-        if(vipGroup.getStatus()!=VipGroupStatusEnum.APPLYING){
-            throw new BizException("该课程已结束报名!");
-        }
-
-        VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
-        StudentPaymentOrder studentPaymentOrder=new StudentPaymentOrder();
-        studentPaymentOrder.setUserId(user.getId());
-        String orderNo=StringUtils.join(new String[]{user.getId().toString(),String.valueOf(System.currentTimeMillis())});
-        studentPaymentOrder.setOrderNo(orderNo);
-        studentPaymentOrder.setType(OrderTypeEnum.SMALL_CLASS_TO_BUY);
-        studentPaymentOrder.setExpectAmount(countVipGroupPredictFee(vipGroup,vipGroup.getOnlineClassesUnitPrice(),vipGroup.getOfflineClassesUnitPrice()).get("totalPrice"));
-        if(vipGroupActivity.getType()==VipGroupActivityTypeEnum.DISCOUNT){
-            studentPaymentOrder.setActualAmount(studentPaymentOrder.getExpectAmount().multiply(new BigDecimal(vipGroupActivity.getAttribute1())));
-        }else{
-            studentPaymentOrder.setActualAmount(studentPaymentOrder.getExpectAmount());
-        }
-        VipGroupClassGroupMapper vipGroupClassGroupMapper = vipGroupClassGroupMapperDao.findByVipGroupId(vipGroup.getId());
-        studentPaymentOrder.setMusicGroupId(vipGroup.getId().toString());
-        studentPaymentOrder.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
-        studentPaymentOrderDao.insert(studentPaymentOrder);
-
-        StudentVipGroupPayment studentVipGroupPayment=new StudentVipGroupPayment();
-        studentVipGroupPayment.setUserId(user.getId());
-		studentVipGroupPayment.setVipGroupId(vipGroup.getId());
-		studentVipGroupPayment.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
-        studentVipGroupPayment.setStudentPaymentOrderId(studentPaymentOrder.getId());
-        studentVipGroupPaymentDao.insert(studentVipGroupPayment);
-
-		ClassGroup classGroup = classGroupDao.get(vipGroupClassGroupMapper.getClassGroupId());
-		int classStudents = classGroupDao.countClassStudent(vipGroupClassGroupMapper.getClassGroupId().longValue());
-		if(classGroup.getExpectStudentNum()==classStudents){
-			vipGroup.setStatus(VipGroupStatusEnum.FINISH);
-			vipGroupDao.update(vipGroup);
-		}
-		classGroup.setStudentNum(classGroup.getStudentNum()+1);
-		classGroupDao.update(classGroup);
-
-		//生成回调地址
-    }
-
     /**
      * @Author: Joburgess
      * @Date: 2019/10/2
@@ -620,11 +464,78 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         return results;
     }
 
+	@Transactional(rollbackFor = Exception.class)
 	@Override
+	public void buyVipGroup(VipGroupBuyParamsDto vipGroupBuyParams) {
+		SysUser user = sysUserFeignService.queryUserInfo();
+		VipGroup vipGroup = vipGroupDao.get(vipGroupBuyParams.getVipGroupId());
+
+		if(vipGroup.getStatus()!=VipGroupStatusEnum.APPLYING){
+			throw new BizException("该课程已结束报名!");
+		}
+
+		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
+		StudentPaymentOrder studentPaymentOrder=new StudentPaymentOrder();
+		studentPaymentOrder.setUserId(user.getId());
+		String orderNo=StringUtils.join(new String[]{user.getId().toString(),String.valueOf(System.currentTimeMillis())});
+		studentPaymentOrder.setOrderNo(orderNo);
+		studentPaymentOrder.setType(OrderTypeEnum.SMALL_CLASS_TO_BUY);
+		studentPaymentOrder.setExpectAmount(countVipGroupPredictFee(vipGroup,vipGroup.getOnlineClassesUnitPrice(),vipGroup.getOfflineClassesUnitPrice()).get("totalPrice"));
+		if(vipGroupActivity.getType()==VipGroupActivityTypeEnum.DISCOUNT){
+			studentPaymentOrder.setActualAmount(studentPaymentOrder.getExpectAmount().multiply(new BigDecimal(vipGroupActivity.getAttribute1())));
+		}else{
+			studentPaymentOrder.setActualAmount(studentPaymentOrder.getExpectAmount());
+		}
+		VipGroupClassGroupMapper vipGroupClassGroupMapper = vipGroupClassGroupMapperDao.findByVipGroupId(vipGroup.getId());
+		studentPaymentOrder.setMusicGroupId(vipGroup.getId().toString());
+		studentPaymentOrder.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
+		studentPaymentOrderDao.insert(studentPaymentOrder);
+
+		//生成回调地址
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public void orderCallback(String callbackParams) {
 		/*
 		根据回调信息调整订单状态及vip课程状态等相关信息
 		 */
+		Long vipGroupId=1L,userId=1L;
+
+		VipGroup vipGroup = vipGroupDao.get(vipGroupId);
+
+		if(vipGroup.getStatus()!=VipGroupStatusEnum.APPLYING){
+			throw new BizException("该课程已结束报名!");
+		}
+
+		//生成学生单课缴费信息
+		courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId,userId);
+
+		VipGroupClassGroupMapper vipGroupClassGroupMapper = vipGroupClassGroupMapperDao.findByVipGroupId(vipGroupId);
+
+		//更新订单状态
+		StudentPaymentOrder studentPaymentOrder=studentPaymentOrderDao.findByStudentVipGroup(vipGroupId,userId);
+		studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
+		studentPaymentOrderDao.update(studentPaymentOrder);
+
+		//生成缴费明细
+		StudentVipGroupPayment studentVipGroupPayment=new StudentVipGroupPayment();
+		studentVipGroupPayment.setUserId(userId.intValue());
+		studentVipGroupPayment.setVipGroupId(vipGroupId);
+		studentVipGroupPayment.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
+		studentVipGroupPayment.setStudentPaymentOrderId(studentPaymentOrder.getId());
+		studentVipGroupPaymentDao.insert(studentVipGroupPayment);
+
+		//将学生加入到班级,更新班级报名状态及人数信息
+		ClassGroup classGroup = classGroupDao.get(vipGroupClassGroupMapper.getClassGroupId());
+		int classStudents = classGroupDao.countClassStudent(vipGroupClassGroupMapper.getClassGroupId().longValue());
+		if(classGroup.getExpectStudentNum()==classStudents){
+			vipGroup.setStatus(VipGroupStatusEnum.FINISH);
+			vipGroupDao.update(vipGroup);
+		}
+		classGroup.setStudentNum(classGroup.getStudentNum()+1);
+		classGroupDao.update(classGroup);
+
 	}
 
 	@Override
@@ -769,7 +680,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     		return;
 		}
 		List<Map<Long, BigDecimal>> maps = vipGroupDao.countSurplusCourseFee(vipGroupId);
-    	if(CollectionUtils.isEmpty(maps)){
+    	if(CollectionUtils.isEmpty(maps)||(maps.size()==1&&Objects.isNull(maps.get(0)))){
 			vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
 			vipGroupDao.update(vipGroup);
 			return;

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

@@ -71,4 +71,10 @@
     <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM charge_type
 	</select>
+    <select id="queryNameByIds" resultType="java.util.Map" parameterType="list">
+        SELECT id_ `key`,name_ `value` FROM charge_type WHERE id_ IN
+        <foreach item="item" index="index" collection="chargeTypeIds" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
 </mapper>

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

@@ -409,6 +409,14 @@
             AND cg.name_ LIKE CONCAT('%',#{search},'%')
         </if>
     </select>
+    <select id="findNoClassSubjects" resultMap="ClassGroup">
+        SELECT * FROM class_group cg
+        WHERE cg.id_ NOT IN
+        (SELECT cgr.sub_class_group_id_ FROM class_group_relation cgr
+        LEFT JOIN class_group cg ON cg.id_ = cgr.class_group_id_
+        WHERE cg.music_group_id_ = #{musicGroupId})
+        AND cg.music_group_id_ = #{musicGroupId}
+    </select>
 
     <!-- 增加实际学生人数 -->
     <update id="addStudentNum" parameterType="com.ym.mec.biz.dal.entity.ClassGroup">

+ 7 - 1
mec-biz/src/main/resources/config/mybatis/CourseHomeworkTemplateMapper.xml

@@ -16,6 +16,7 @@
         <result column="class_group_type_" property="classGroupType"
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="subject_id_" property="subjectId"/>
+        <result column="subject_name_" property="subjectName"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -85,7 +86,12 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="CourseHomeworkTemplate" parameterType="map">
-        SELECT * FROM course_homework_template
+        SELECT
+        cht.*,
+        s.name_ subject_name_
+        FROM
+        course_homework_template cht
+        LEFT JOIN `subject` s ON cht.subject_id_=s.id_
         <include refid="queryCondition"/>
         ORDER BY id_
         <include refid="global.limit"/>

+ 48 - 10
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -67,16 +67,16 @@
         </selectKey>
         -->
         INSERT INTO course_schedule
-        (id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_)
-        VALUES(#{id},#{classGroupId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subsidy},#{classDate},#{startClassTime},#{endClassTime},#{teacherId},#{actualTeacherId},now(),now(),#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{name})
+        (id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_,teach_mode_)
+        VALUES(#{id},#{classGroupId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subsidy},#{classDate},#{startClassTime},#{endClassTime},#{teacherId},#{actualTeacherId},now(),now(),#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{name},#{teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
     </insert>
 
-    <insert id="batchAddCourseSchedules" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
+    <insert id="batchAddCourseSchedules" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
         INSERT INTO course_schedule
-        (id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_)
+        (id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_,teach_mode_)
         VALUE
         <foreach collection="list" item="course" separator=",">
-            (#{course.id},#{course.classGroupId},#{course.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.subsidy},#{course.classDate},#{course.startClassTime},#{course.endClassTime},#{course.teacherId},#{course.actualTeacherId},now(),now(),#{course.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.name})
+            (#{course.id},#{course.classGroupId},#{course.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.subsidy},#{course.classDate},#{course.startClassTime},#{course.endClassTime},#{course.teacherId},#{course.actualTeacherId},now(),now(),#{course.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.name},#{course.teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
         </foreach>
     </insert>
 
@@ -237,7 +237,7 @@
             CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
             cs.status_,
 	        su.username_ teacher_name_,
-	        ta.status_ attendance_status_
+	        ta.sign_in_status_ attendance_status_
         FROM
             music_group mg
             LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
@@ -247,7 +247,7 @@
         WHERE
             mg.organ_id_ = #{organId}
             AND cs.id_ IS NOT NULL
-            AND cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
+            AND cs.class_date_ = DATE_FORMAT(#{date},'%Y-%m-%d')
         <include refid="global.limit"/>
     </select>
 
@@ -261,7 +261,7 @@
         WHERE
         mg.organ_id_ = #{organId}
         AND cs.id_ IS NOT NULL
-        AND cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
+        AND cs.class_date_ = DATE_FORMAT(#{date},'%Y-%m-%d')
     </select>
 
     <select id="getStudentCourseSchedulesWithDate" resultMap="courseScheduleDto">
@@ -300,7 +300,7 @@
 	        s.name_ school_name_,
 	        ta.sign_in_status_,
 	        ta.sign_out_status_,
-	        cg.teach_mode_
+	        cs.teach_mode_
         FROM
             course_schedule cs
             LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
@@ -455,7 +455,7 @@
             LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
             LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
         WHERE
-            mg.organ_id_ = 1 AND cs.id_ IS NOT NULL
+            mg.organ_id_ = #{organId} AND cs.id_ IS NOT NULL
             <if test="month==null">
                 AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
             </if>
@@ -580,4 +580,42 @@
             LEFT JOIN sys_user su ON sa.user_id_=su.id_
             WHERE sa.course_schedule_id_=#{courseScheduleId}
     </select>
+    <select id="findVipGroupCourseSchedules" resultMap="CourseSchedule">
+      SELECT
+            cs.*
+        FROM
+            vip_group_class_group_mapper vgcgm
+            LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
+        WHERE
+            vgcgm.vip_group_id_ =#{vipGroupId}
+    </select>
+    <select id="findByClassGroupAndDate" resultMap="CourseSchedule">
+        SELECT
+        id_,
+        class_group_id_,
+        status_,
+        subsidy_,
+        class_date_,
+        CONCAT(class_date_,' ',start_class_time_) start_class_time_,
+        CONCAT(class_date_,' ',end_class_time_) end_class_time_,
+        teacher_id_,
+        actual_teacher_id_,
+        create_time_,
+        update_time_,
+        type_,name_,
+        teach_mode_
+        FROM
+            course_schedule
+        <where>
+            <if test="classGroupId!=null">
+                AND class_group_id_ = #{classGroupId}
+            </if>
+            <if test="classDates!=null">
+                AND class_date_ IN
+                <foreach collection="classDates" item="classDate" open="(" close=")" separator=",">
+                    #{classDate}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>

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

@@ -156,10 +156,10 @@ create_time_ = #{createTime},
 				AND FIND_IN_SET(dg.subject_id_,#{subjectIds})
 			</if>
 			<if test="startTime!=null and endTime==null">
-				AND CONCAT(dgcp.course_date_,' ',dgcp.start_time_)=#{startTime}
+				AND CONCAT(dgcp.course_date_,' ',dgcp.start_time_)&gt;t=#{startTime}
 			</if>
 			<if test="startTime!=null and endTime!=null">
-				AND (CONCAT(dgcp.course_date_,' ',dgcp.start_time_) BETWEEN #{startTime} AND #{endTime})
+				AND (CONCAT(dgcp.course_date_,' ',dgcp.start_time_) BETWEEN DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i') AND DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i'))
 			</if>
 		</where>
 	</sql>

+ 22 - 5
mec-biz/src/main/resources/config/mybatis/GoodsCategoryMapper.xml

@@ -12,7 +12,7 @@
         <result column="img_" property="img"/>
         <result column="parent_id_" property="parentId"/>
         <result column="order_no_" property="orderNo"/>
-        <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="desc_" property="desc"/>
         <result column="update_time_" property="updateTime"/>
         <result column="create_time_" property="createTime"/>
@@ -42,8 +42,8 @@
             <if test="parentId != null">
                 parent_id_ = #{parentId},
             </if>
-            <if test="status != null">
-                status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            <if test="delFlag != null">
+                del_flag_ = #{delFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
             <if test="orderNo != null">
                 order_no_ = #{orderNo},
@@ -71,12 +71,29 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="GoodsCategory" parameterType="map">
-        SELECT * FROM goods_category ORDER BY id_
+        SELECT gc.* FROM goods_category gc
+        <include refid="queryPageSql"/>
+        ORDER BY id_
         <include refid="global.limit"/>
     </select>
+    <sql id="queryPageSql">
+        <where>
+            <if test="parentId != null">
+                gc.parent_id_ = #{parentId}
+            </if>
+            <if test="delFlag != null">
+                AND gc.del_flag_ = #{delFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+        </where>
+    </sql>
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM goods_category
+		SELECT COUNT(*) FROM goods_category gc
+        <include refid="queryPageSql"/>
 	</select>
+
+    <select id="findByParentId" resultMap="GoodsCategory">
+        SELECT * FROM goods_category WHERE parent_id_ = #{parentId} AND del_flag_ = #{delFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+    </select>
 </mapper>

+ 23 - 3
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -128,7 +128,6 @@
 		DELETE FROM music_group WHERE id_ = #{id}
 	</delete>
 
-	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="MusicGroup" parameterType="map">
 		SELECT * FROM music_group ORDER BY id_
 		<include refid="global.limit" />
@@ -224,8 +223,13 @@
 		</where>
 	</select>
 
-    <select id="countMusicGroupUserNum" resultType="java.lang.Integer">
-		SELECT SUM(student_num_) FROM class_group WHERE music_group_id_ = #{musicGroupId}
+    <select id="countMusicGroupUserNum" resultType="map">
+		SELECT SUM(student_num_) 'value',music_group_id_ 'key' FROM class_group
+		WHERE music_group_id_ IN
+		<foreach item="item" index="index" collection="musicGroupIds" open="(" separator="," close=")">
+			#{item}
+		</foreach>
+		GROUP BY music_group_id_
     </select>
 
 	<resultMap id="ImUserModel" type="com.ym.mec.common.entity.ImUserModel">
@@ -252,4 +256,20 @@
 		LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.class_group_id_
 		WHERE cg.music_group_id_ = #{id}
 	</select>
+    <select id="countPayNum" resultType="java.util.Map" parameterType="list">
+		SELECT cg.music_group_id_ `key`,COUNT(cgsm.id_) `value` FROM class_group cg
+		LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
+		WHERE cg.music_group_id_ IN
+		<foreach item="item" index="index" collection="musicGroupIds" open="(" separator="," close=")">
+			#{item}
+		</foreach>
+		AND cgsm.status_ != 'QUIT' GROUP BY cg.music_group_id_
+	</select>
+
+    <select id="queryListByIds" resultMap="MusicGroup">
+		SELECT * FROM music_group WHERE id_ IN
+		<foreach item="item" index="index" collection="musicGroupIds" open="(" separator="," close=")">
+			#{item}
+		</foreach>
+	</select>
 </mapper>

+ 10 - 2
mec-biz/src/main/resources/config/mybatis/MusicGroupStudentFeeMapper.xml

@@ -17,6 +17,8 @@
         <result column="continuous_absenteeism_times_" property="continuousAbsenteeismTimes"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
+        <result column="payment_status_" property="paymentStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="temporary_course_fee_" property="temporaryCourseFee"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -32,8 +34,8 @@
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupStudentFee" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
-		INSERT INTO music_group_student_fee_ (id_,music_group_id_,user_id_,course_fee_,create_time_,update_time_,next_payment_date_,latest_paid_time_,continuous_absenteeism_times_,subject_id_)
-		VALUES(#{id},#{musicGroupId},#{userId},#{courseFee},now(),now(),#{nextPaymentDate},#{latestPaidTime},#{continuousAbsenteeismTimes},#{subjectId})
+		INSERT INTO music_group_student_fee_ (id_,music_group_id_,user_id_,course_fee_,create_time_,update_time_,next_payment_date_,latest_paid_time_,continuous_absenteeism_times_,subject_id_,payment_status_,temporary_course_fee_)
+		VALUES(#{id},#{musicGroupId},#{userId},#{courseFee},now(),now(),#{nextPaymentDate},#{latestPaidTime},#{continuousAbsenteeismTimes},#{subjectId},#{paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{temporaryCourseFee})
 	</insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -64,6 +66,12 @@
             <if test="continuousAbsenteeismTimes != null">
                 continuous_absenteeism_times_ = #{continuousAbsenteeismTimes},
             </if>
+            <if test="paymentStatus != null">
+                payment_status_ = #{paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="temporaryCourseFee != null">
+                temporary_course_fee_ = #{temporaryCourseFee},
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>

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

@@ -110,4 +110,10 @@
             </if>
         </where>
     </select>
+    <select id="queryNameByIds" resultType="java.util.Map" parameterType="list">
+        select id_ `key`,name_ `value` FROM school s WHERE id_ IN
+        <foreach item="item" index="index" collection="schoolIds" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
 </mapper>

+ 4 - 2
mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml

@@ -80,7 +80,9 @@
 	</select>
 
     <select id="findSubByMusicGroupId" resultMap="Subject">
-        SELECT s.* FROM music_group_subject_plan mgsp LEFT JOIN `subject` s ON mgsp.subject_id_ = s.id_ WHERE mgsp.music_group_id_ = #{musicGroupId}
+        SELECT s.* FROM music_group_subject_plan mgsp
+        LEFT JOIN `subject` s ON mgsp.subject_id_ = s.id_
+        WHERE mgsp.music_group_id_ = #{musicGroupId}
     </select>
 
     <select id="findSubByChargeType" resultMap="Subject">
@@ -113,7 +115,7 @@
         SELECT mgsp.subject_id_,s.name_,mgsp.expected_student_num_,mgsp.apply_student_num_
         FROM music_group_subject_plan mgsp
         LEFT JOIN `subject` s ON mgsp.subject_id_ = s.id_
-        WHERE mgsp.music_group_id_ =
+        WHERE mgsp.music_group_id_ = #{musicGroupId}
     </select>
     <select id="findBySubIds" resultType="string">
         SELECT name_ FROM `subject` WHERE del_flag_ = 0 AND FIND_IN_SET (id_,#{subIds})

+ 7 - 3
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -42,9 +42,7 @@
         <result column="birthdate_" property="birthdate"/>
         <result column="email_" property="email"/>
         <result column="im_token_" property="imToken"/>
-        <collection property="subjectName" ofType="string">
-            <result column="subject_name_"/>
-        </collection>
+        <collection property="subjectName" ofType="string" column="subject_name_"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -252,4 +250,10 @@
             AND su.username_ LIKE CONCAT('%',#{search},'%')
         </if>
     </select>
+    <select id="queryNameByIds" resultType="java.util.Map" parameterType="list">
+        select id_ `key`,real_name_ `value` FROM sys_user s WHERE id_ IN
+        <foreach item="item" index="index" collection="userIds" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
 </mapper>

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/TeacherSchoolMapper.xml

@@ -85,4 +85,7 @@
     <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM teacher_school
 	</select>
+    <select id="findByTeacherId" resultMap="TeacherSchool">
+      SELECT * FROM teacher_school WHERE user_id_=#{teacherId} ORDER BY id_
+    </select>
 </mapper>

+ 30 - 14
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -8,6 +8,7 @@
 
     <resultMap type="com.ym.mec.biz.dal.entity.VipGroup" id="VipGroup">
         <result column="id_" property="id"/>
+        <result column="name_" property="name"/>
         <result column="user_id_" property="userId"/>
         <result column="username_" property="userName"/>
         <result column="single_class_minutes_" property="singleClassMinutes"/>
@@ -40,7 +41,6 @@
     <resultMap id="vipGroupManageDetailDto" type="com.ym.mec.biz.dal.dto.VipGroupManageDetailDto" extends="VipGroup">
         <result property="studentNum" column="student_num_"/>
         <result property="subjectIdList" column="subject_id_list_"/>
-        <result property="latestClassTime" column="current_class_times_"/>
         <result property="categoryName" column="category_name_"/>
         <result column="teacher_school_name_" property="teacherSchoolName"/>
         <!--<collection property="students" ofType="com.ym.mec.auth.api.entity.SysUser" column="student_id_">-->
@@ -50,6 +50,7 @@
     </resultMap>
 
     <resultMap id="studentVipGroupDetailDto" type="com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto" extends="studentVipGroup">
+        <result column="address_" property="address"/>
         <collection property="courseSchedules" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleDao.CourseSchedule" column="cs.id_"/>
     </resultMap>
 
@@ -63,6 +64,7 @@
         <result column="total_price_" property="totalPrice"/>
         <result column="expect_student_num_" property="expectStudentNum"/>
         <result column="student_num_" property="studentNum"/>
+        <result column="user_id_" property="teacherId"/>
         <result column="teacher_name_" property="teacherName"/>
         <result column="introduction_" property="introduction"/>
         <result column="avatar_" property="avatar"/>
@@ -140,8 +142,8 @@
         </selectKey>
         -->
         INSERT INTO vip_group
-        (id_,user_id_,single_class_minutes_,payment_expire_date_,courses_expire_date_,create_time_,update_time_,teacher_school_id_,online_classes_num_,offline_classes_num_,registration_start_time_,organ_id_list_,vip_group_activity_id_,status_,online_classes_unit_price_,offline_classes_unit_price_,total_price_,give_teach_mode_)
-        VALUES(#{id},#{userId},#{singleClassMinutes},#{paymentExpireDate},#{coursesExpireDate},now(),now(),#{teacherSchoolId},#{onlineClassesNum},#{offlineClassesNum},#{registrationStartTime},#{organIdList},#{vipGroupActivityId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{onlineClassesUnitPrice},#{offlineClassesUnitPrice},#{totalPrice},#{giveTeachMode})
+        (id_,user_id_,single_class_minutes_,payment_expire_date_,courses_expire_date_,create_time_,update_time_,teacher_school_id_,online_classes_num_,offline_classes_num_,registration_start_time_,name_,organ_id_list_,vip_group_activity_id_,status_,online_classes_unit_price_,offline_classes_unit_price_,total_price_,give_teach_mode_,vip_group_category_id_)
+        VALUES(#{id},#{userId},#{singleClassMinutes},#{paymentExpireDate},#{coursesExpireDate},now(),now(),#{teacherSchoolId},#{onlineClassesNum},#{offlineClassesNum},#{registrationStartTime},#{name},#{organIdList},#{vipGroupActivityId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{onlineClassesUnitPrice},#{offlineClassesUnitPrice},#{totalPrice},#{giveTeachMode},#{vipGroupCategoryId})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -176,7 +178,7 @@
                 registration_start_time_ = #{registrationStartTime},
             </if>
             <if test="organIdList!=null">
-                organ_id_list_=#{organIdList}
+                organ_id_list_=#{organIdList},
             </if>
             <if test="auditStatus != null">
                 audit_status_ = #{auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
@@ -187,7 +189,7 @@
             <if test="vipGroupActivityId != null">
                 vip_group_activity_id_ = #{vipGroupActivityId},
             </if>
-            <if test="status_ != null">
+            <if test="status != null">
                 status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
             <if test="onlineClassesUnitPrice != null">
@@ -224,11 +226,15 @@
 
     <sql id="studentVipGroupQueryCondition">
         <where>
+            vg.status_!=3
             <if test="subjectId!=null">
-                FIND_IN_SET(#{subjectId},cg.subject_id_list_)
+               AND FIND_IN_SET(#{subjectId},cg.subject_id_list_)
+            </if>
+            <if test="classType!=null and classType.toString()=='0'.toString()">
+                AND vg.offline_classes_num_>0
             </if>
-            <if test="classType!=null">
-                AND cg.teach_mode_=#{classType}
+            <if test="classType!=null and classType.toString()=='1'.toString()">
+                AND vg.online_classes_num_>0
             </if>
             <if test="search!=null">
                 AND vg.name_ like concat('%',#{search},'%')
@@ -258,9 +264,8 @@
             vip_group vg
             LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
             LEFT JOIN class_group cg ON vgcgm.class_group_id_=cg.id_
-            LEFT JOIN class_group_teacher_mapper cgtm ON vgcgm.class_group_id_=cgtm.class_group_id_
-            LEFT JOIN teacher t ON cgtm.user_id_=t.id_
-            LEFT JOIN sys_user su ON cgtm.user_id_=su.id_
+            LEFT JOIN teacher t ON vg.user_id_=t.id_
+            LEFT JOIN sys_user su ON vg.user_id_=su.id_
             LEFT JOIN vip_group_activity vga ON vg.vip_group_activity_id_=vga.id_
             LEFT JOIN vip_group_category vgc ON vg.vip_group_category_id_=vgc.id_
             <include refid="studentVipGroupQueryCondition"/>
@@ -344,18 +349,22 @@
     <select id="getVipGroupDetail" resultMap="studentVipGroupDetailDto">
         SELECT
             vg.*,
+            cg.expect_student_num_,
+            cg.student_num_,
             su.username_ teacher_name_,
             su.avatar_,
             t.introduction_,
             cs.id_ course_id_,
+            s.name_ address_,
             cs.*
         FROM
             vip_group vg
             LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
+            LEFT JOIN class_group cg ON vgcgm.class_group_id_=cg.id_
             LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
-            LEFT JOIN class_group_teacher_mapper cgtm ON vgcgm.class_group_id_=cgtm.class_group_id_
-            LEFT JOIN teacher t ON cgtm.user_id_=t.id_
-          LEFT JOIN sys_user su ON cgtm.user_id_=su.id_
+	        LEFT JOIN school s ON vg.teacher_school_id_=s.id_
+            LEFT JOIN teacher t ON vg.user_id_=t.id_
+          LEFT JOIN sys_user su ON vg.user_id_=su.id_
         WHERE vg.id_=#{vipGroupId}
     </select>
     <select id="countSurplusClassTimes" resultType="java.util.Map">
@@ -514,4 +523,11 @@
             WHERE vg.id_=#{vipGroupId} AND cs.status_!='OVER'
         GROUP BY cssp.user_id_
     </select>
+    <select id="countTeacherVipGroups" resultType="int">
+        SELECT
+            COUNT( * )
+        FROM
+            vip_group
+        WHERE user_id_=#{teacherId} AND status_!=3
+    </select>
 </mapper>

+ 32 - 0
mec-education/src/main/java/com/ym/mec/education/controller/CourseHomeworkTemplateController.java

@@ -0,0 +1,32 @@
+package com.ym.mec.education.controller;
+
+import com.ym.mec.biz.dal.page.CourseHomeWorkTemplateQueryInfo;
+import com.ym.mec.biz.service.CourseHomeworkTemplateService;
+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.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/18
+ */
+@RequestMapping("courseHomeworkTemplate")
+@Api(tags = "作业模板")
+@RestController
+public class CourseHomeworkTemplateController extends BaseController {
+
+    @Autowired
+    private CourseHomeworkTemplateService courseHomeworkTemplateService;
+
+    @ApiOperation(value = "分页查询作业模板列表")
+    @PostMapping("/queryPage")
+    public Object queryPage(@RequestBody CourseHomeWorkTemplateQueryInfo queryInfo){
+        return succeed(courseHomeworkTemplateService.queryPage(queryInfo));
+    }
+
+}

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

@@ -57,8 +57,8 @@ public class MusicGroupRegisterController extends BaseController {
 
     @ApiOperation(value = "获取乐团报名所需信息")
     @GetMapping("/getMusicGroupRegInfo")
-    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "Integer")})
-    public HttpResponseResult getMusicGroupRegInfo(Integer musicGroupId) {
+    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
+    public HttpResponseResult getMusicGroupRegInfo(String musicGroupId) {
         return succeed(musicGroupSubjectPlanService.getMusicGroupRegInfo(musicGroupId));
     }
 

+ 5 - 5
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TaskController.java

@@ -48,7 +48,7 @@ public class TaskController extends BaseController {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
 
-		snakerEngine.query().getHistoryOrders(page, new QueryFilter().setOperator(user.getId()+""));
+		snakerEngine.query().getHistoryOrders(page, new QueryFilter().setOperator(user.getId() + ""));
 		return succeed(page);
 	}
 
@@ -65,7 +65,7 @@ public class TaskController extends BaseController {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
 
-		snakerEngine.query().getWorkItems(page, new QueryFilter().setOperator(user.getUsername()));
+		snakerEngine.query().getWorkItems(page, new QueryFilter().setOperator(user.getId() + ""));
 		return succeed(page);
 	}
 
@@ -82,7 +82,7 @@ public class TaskController extends BaseController {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
 
-		snakerEngine.query().getHistoryWorkItems(page, new QueryFilter().setOperator(user.getId()+""));
+		snakerEngine.query().getHistoryWorkItems(page, new QueryFilter().setOperator(user.getId() + ""));
 		return succeed(page);
 	}
 
@@ -99,7 +99,7 @@ public class TaskController extends BaseController {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
 
-		snakerEngine.query().getCCWorks(page, new QueryFilter().setOperator(user.getId()+"").setState(AccessService.STATE_FINISH));
+		snakerEngine.query().getCCWorks(page, new QueryFilter().setOperator(user.getId() + "").setState(AccessService.STATE_FINISH));
 		return succeed(page);
 	}
 
@@ -116,7 +116,7 @@ public class TaskController extends BaseController {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
 
-		snakerEngine.query().getCCWorks(page, new QueryFilter().setOperator(user.getUsername()).setState(AccessService.STATE_ACTIVE));
+		snakerEngine.query().getCCWorks(page, new QueryFilter().setOperator(user.getId() + "").setState(AccessService.STATE_ACTIVE));
 		return succeed(page);
 	}
 

+ 1 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -53,7 +53,7 @@ public class TeacherCourseScheduleController extends BaseController {
         return succeed(result);
     }
 
-    @ApiOperation(value = "根据课程ID查询正在或即将开始的课程")
+    @ApiOperation(value = "根据课程ID查询打卡界面课程详情")
     @GetMapping("/getCurrentCourseDetail")
     public Object getCurrentCourseDetail(Long courseID){
         if(Objects.isNull(courseID)){

+ 6 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherVipGroupController.java

@@ -14,6 +14,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Objects;
+
 /**
  * @Author Joburgess
  * @Date 2019/9/21
@@ -33,7 +35,11 @@ public class TeacherVipGroupController extends BaseController {
     @PostMapping("/vipGroupApply")
     public Object vipGroupApply(@RequestBody VipGroupApplyDto vipGroupApplyDto){
         SysUser user = sysUserFeignService.queryUserInfo();
+        if(Objects.isNull(user)){
+            return failed("请登录");
+        }
         vipGroupApplyDto.getVipGroupApplyBaseInfo().setTeacherId(Long.valueOf(user.getId()));
+        vipGroupApplyDto.getVipGroupApplyBaseInfo().setOrganIdList(user.getOrganId().toString());
         vipGroupService.createVipGroup(vipGroupApplyDto);
         return succeed();
     }

+ 66 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherVipSchoolController.java

@@ -0,0 +1,66 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.biz.dal.entity.TeacherSchool;
+import com.ym.mec.biz.service.TeacherSchoolService;
+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.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/10/14
+ */
+@Api(value = "教师vip课教学点服务")
+@RequestMapping("teacherVipSchool")
+@RestController
+public class TeacherVipSchoolController extends BaseController {
+
+    @Autowired
+    private TeacherSchoolService teacherSchoolService;
+
+    @ApiOperation("单查询")
+    @GetMapping(value = "/query")
+    public Object query(Long id) {
+        return succeed(teacherSchoolService.get(id));
+    }
+
+    @ApiOperation("根据教师编号获取教学点")
+    @GetMapping(value = "/queryAll")
+    public Object queryAll(Long teacherId) {
+        return succeed(teacherSchoolService.findByTeacherId(teacherId));
+    }
+
+    @ApiOperation("新增")
+    @PostMapping(value = "/add")
+    public Object add(TeacherSchool teacherSchool) {
+        Date date = new Date();
+        teacherSchool.setCreateTime(date);
+        teacherSchool.setUpdateTime(date);
+        teacherSchoolService.insert(teacherSchool);
+        return succeed();
+    }
+
+    @ApiOperation("修改")
+    @PostMapping(value = "/update")
+    public Object update(TeacherSchool teacherSchool) {
+        Date date = new Date();
+        teacherSchool.setUpdateTime(date);
+        teacherSchoolService.update(teacherSchool);
+        return succeed();
+    }
+
+    @ApiOperation("删除")
+    @PostMapping(value = "/delete")
+    public Object delete(Long id) {
+        teacherSchoolService.delete(id);
+        return succeed();
+    }
+
+}

+ 3 - 3
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/eseal/provider/TsignPlugin.java

@@ -56,15 +56,15 @@ public class TsignPlugin implements ESealPlugin, InitializingBean, DisposableBea
 		projectconfig.setItsmApiUrl(apisUrl);
 		Result result = ServiceClientManager.registClient(projectconfig, null, null);
 		if (result.getErrCode() != 0) {
-			throw new ThirdpartyException("e签宝客户端注册失败");
+			//throw new ThirdpartyException("e签宝客户端注册失败");
 		}
 
 		serviceClient = ServiceClientManager.get(projectId);
 		if (serviceClient == null) {
-			throw new ThirdpartyException(MessageFormat.format("ServiceClient为null,获取客户端接口调用失败 ", projectId));
+			//throw new ThirdpartyException(MessageFormat.format("ServiceClient为null,获取客户端接口调用失败 ", projectId));
 		}
 		if (serviceClient == null) {
-			throw new ThirdpartyException("获取e签宝客户端失败");
+			//throw new ThirdpartyException("获取e签宝客户端失败");
 		}
 	}
 

+ 4 - 0
mec-util/src/main/java/com/ym/mec/util/collection/MapUtil.java

@@ -11,6 +11,7 @@ import java.lang.reflect.Method;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 public class MapUtil {
 
@@ -108,6 +109,9 @@ public class MapUtil {
 	public static <T,K> Map convertMybatisMap(List<Map<T,K>> maps){
 		Map result=new HashMap();
 		maps.forEach(stringIntegerMap -> {
+			if(Objects.isNull(stringIntegerMap)){
+				return;
+			}
 			result.put(stringIntegerMap.get("key"),stringIntegerMap.get("value"));
 		});
 		return result;

+ 10 - 4
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -72,26 +72,32 @@ public class ClassGroupController extends BaseController {
 
     @ApiOperation(value = "合奏班相关班级获取")
     @GetMapping("/findClassGroupAboutMix")
-    public Object findClassGroupAboutMix(@ApiParam(value = "乐团编号", required = true) @RequestParam Integer musicGroupId,
+    public Object findClassGroupAboutMix(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId,
                                          @ApiParam(value = "班级编号", required = false) Integer mixClassGroupId) {
         return succeed(classGroupService.findClassGroup(musicGroupId, mixClassGroupId));
     }
 
     @ApiOperation(value = "乐团单技班列表")
     @GetMapping("/findMusicGroupClass")
-    public Object findMusicGroupClass(@ApiParam(value = "乐团编号", required = true) @RequestParam Integer musicGroupId) {
+    public Object findMusicGroupClass(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
         return succeed(classGroupService.findAllNormalClassGroupByMusicGroupId(musicGroupId));
     }
 
+    @ApiOperation(value = "获取未分班的单技班列表")
+    @GetMapping("/findNoClassSubjects")
+    public Object findNoClassSubjects(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
+        return succeed(classGroupService.findNoClassSubjects(musicGroupId));
+    }
+
     @ApiOperation(value = "乐团合奏班列表")
     @GetMapping("/findMixMusicGroupClass")
-    public Object findMixMusicGroupClass(@ApiParam(value = "乐团编号", required = true) @RequestParam Integer musicGroupId) {
+    public Object findMixMusicGroupClass(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
         return succeed(classGroupService.findAllMixClassGroupByMusicGroupId(musicGroupId));
     }
 
     @ApiOperation(value = "乐团所有班列表")
     @GetMapping("/findAllClassGroupByMusicGroup")
-    public Object findAllClassGroupByMusicGroup(@ApiParam(value = "乐团编号", required = true) @RequestParam Long musicGroupId) {
+    public Object findAllClassGroupByMusicGroup(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
         return succeed(classGroupService.findAllClassGroupByMusicGroup(musicGroupId));
     }
 

+ 19 - 14
mec-web/src/main/java/com/ym/mec/web/controller/GoodsCategoryController.java

@@ -1,22 +1,15 @@
 package com.ym.mec.web.controller;
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
 import com.ym.mec.biz.dal.entity.GoodsCategory;
 import com.ym.mec.biz.dal.page.GoodsCategoryQueryInfo;
 import com.ym.mec.biz.service.GoodsCategoryService;
 import com.ym.mec.biz.service.GoodsService;
 import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 @RequestMapping("category")
 @Api(tags = "商品分类服务")
@@ -47,10 +40,22 @@ public class GoodsCategoryController extends BaseController {
         return succeed();
     }
 
-    @ApiOperation(value = "分页查询商品分类列表")
+    @ApiOperation(value = "新增")
+    @PostMapping("/add")
+    public Object add(GoodsCategory goodsCategory){
+        return succeed(goodsCategoryService.insert(goodsCategory));
+    }
+
+    @ApiOperation(value = "修改")
+    @PostMapping("/update")
+    public Object update(GoodsCategory goodsCategory){
+        return succeed(goodsCategoryService.update(goodsCategory));
+    }
+
+    @ApiOperation(value = "分页查询商品分类树状列表")
     @GetMapping("/queryPage")
     public Object queryPage(GoodsCategoryQueryInfo queryInfo) {
-        return succeed(goodsCategoryService.queryPage(queryInfo));
+        return succeed(goodsCategoryService.queryTreePage(queryInfo));
     }
 
     @ApiOperation(value = "根据商品分类编号查询商品分类")

+ 2 - 3
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java

@@ -49,7 +49,7 @@ public class MusicGroupController extends BaseController {
     @ApiOperation(value = "分页查询乐团列表")
     @GetMapping("/queryPage")
     public Object queryPage(MusicGroupQueryInfo queryInfo){
-        return succeed(musicGroupService.queryPage(queryInfo));
+        return succeed(musicGroupService.queryMusicGroupPage(queryInfo));
     }
 
     @ApiOperation(value = "新增乐团  建团申请数据提交")
@@ -59,7 +59,6 @@ public class MusicGroupController extends BaseController {
         if(sysUser == null || sysUser.getId() == null){
             return failed("获取用户信息失败");
         }
-        musicGroupService.createGroup(subFeeSettingDto,sysUser.getId());
-        return succeed();
+        return succeed(musicGroupService.createGroup(subFeeSettingDto,sysUser.getId()));
     }
 }

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

@@ -29,7 +29,7 @@ public class MusicGroupSubjectPlanController extends BaseController {
 
     @ApiOperation(value = "乐团声部分班情况")
     @GetMapping("/getMusicSubjectClass")
-    public Object getMusicSubjectClass(@ApiParam(value = "乐团编号", required = true) int musicGroupId) {
+    public Object getMusicSubjectClass(@ApiParam(value = "乐团编号", required = true) String musicGroupId) {
         return succeed(musicGroupSubjectPlanService.getMusicSubjectClassPlan(musicGroupId));
     }
 

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

@@ -81,7 +81,7 @@ public class StudentRegistrationController extends BaseController {
     @GetMapping("/getNoClassStu")
     @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String"),
             @ApiImplicitParam(name = "actualSubjectId", value = "科目(声部)id", required = true, dataType = "int")})
-    public Object getNoClassStuBySubjectId(Integer musicGroupId, Integer actualSubjectId) {
+    public Object getNoClassStuBySubjectId(String musicGroupId, Integer actualSubjectId) {
         return succeed(studentRegistrationService.getNoClassStuBySubjectId(musicGroupId, actualSubjectId));
     }
 

+ 4 - 4
mec-web/src/main/java/com/ym/mec/web/controller/SubjectController.java

@@ -57,8 +57,8 @@ public class SubjectController extends BaseController {
 
     @ApiOperation(value = "通过乐团编号查询乐团科目规划")
     @GetMapping("/querySubByMusicGroupId")
-    @ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "Integer")})
-    public Object findSubByMusicGroupId(Integer musicGroupId){
+    @ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
+    public Object findSubByMusicGroupId(String musicGroupId){
         return succeed(subjectService.findSubByMusicGroupId(musicGroupId));
     }
 
@@ -78,8 +78,8 @@ public class SubjectController extends BaseController {
 
     @ApiOperation(value = "通过乐团编号获取声部列表以及声部报名、缴费、计划人数")
     @GetMapping("/findSubApplyDetail")
-    @ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "Integer")})
-    public Object findSubApplyDetail(Integer musicGroupId){
+    @ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
+    public Object findSubApplyDetail(String musicGroupId){
         return succeed(subjectService.findSubApplyDetail(musicGroupId));
     }
 }

+ 66 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TeacherVipSchoolController.java

@@ -0,0 +1,66 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.biz.dal.entity.TeacherSchool;
+import com.ym.mec.biz.service.TeacherSchoolService;
+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.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/10/14
+ */
+@Api(value = "教师vip课教学点服务")
+@RequestMapping("teacherVipSchool")
+@RestController
+public class TeacherVipSchoolController extends BaseController {
+
+    @Autowired
+    private TeacherSchoolService teacherSchoolService;
+
+    @ApiOperation("单查询")
+    @GetMapping(value = "/query")
+    public Object query(Long id) {
+        return succeed(teacherSchoolService.get(id));
+    }
+
+    @ApiOperation("根据教师编号获取教学点")
+    @GetMapping(value = "/queryAll")
+    public Object queryAll(Long teacherId) {
+        return succeed(teacherSchoolService.findByTeacherId(teacherId));
+    }
+
+    @ApiOperation("新增")
+    @PostMapping(value = "/add")
+    public Object add(TeacherSchool teacherSchool) {
+        Date date = new Date();
+        teacherSchool.setCreateTime(date);
+        teacherSchool.setUpdateTime(date);
+        teacherSchoolService.insert(teacherSchool);
+        return succeed();
+    }
+
+    @ApiOperation("修改")
+    @PostMapping(value = "/update")
+    public Object update(TeacherSchool teacherSchool) {
+        Date date = new Date();
+        teacherSchool.setUpdateTime(date);
+        teacherSchoolService.update(teacherSchool);
+        return succeed();
+    }
+
+    @ApiOperation("删除")
+    @PostMapping(value = "/delete")
+    public Object delete(Long id) {
+        teacherSchoolService.delete(id);
+        return succeed();
+    }
+
+}

+ 9 - 0
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

@@ -1,5 +1,7 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
 import com.ym.mec.biz.dal.entity.StudentApplyRefunds;
@@ -33,10 +35,17 @@ public class VipGroupManageController extends BaseController {
     private VipGroupService vipGroupService;
     @Autowired
     private CourseScheduleService scheduleService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
 
     @ApiOperation(value = "vip课申请")
     @PostMapping("/vipGroupApply")
     public Object vipGroupApply(@RequestBody VipGroupApplyDto vipGroupApplyDto){
+        SysUser sysUser = sysUserFeignService.queryUserById(vipGroupApplyDto.getVipGroupApplyBaseInfo().getUserId());
+        if(Objects.isNull(sysUser)){
+            return failed("请指定指导老师!");
+        }
+        vipGroupApplyDto.getVipGroupApplyBaseInfo().setOrganIdList(sysUser.getOrganId().toString());
         vipGroupService.createVipGroup(vipGroupApplyDto);
         return succeed();
     }

+ 1 - 1
mec-web/src/main/resources/application.yml

@@ -41,7 +41,7 @@ spring:
   redis:
     host: 47.99.212.176
     port: 6379
-    password: 
+    password:
     database: 0
     #连接超时时间(毫秒)
     timeout: 10000

+ 0 - 147
mec-web/src/test/java/com/ym/webApplicationTest.java

@@ -1,147 +0,0 @@
-package com.ym;
-
-import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.CourseScheduleDto;
-import com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.StudentAttendance;
-import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
-import com.ym.mec.biz.service.CourseScheduleService;
-import com.ym.mec.common.security.SecurityUtils;
-import com.ym.mec.web.WebApplication;
-import junit.framework.TestCase;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.http.*;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.util.MultiValueMap;
-import org.springframework.web.client.RestTemplate;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * Unit test for simple App.
- */
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = WebApplication.class)
-public class webApplicationTest
-    extends TestCase{
-
-    @Autowired
-    private RestTemplate restTemplate;
-
-    @Autowired
-    private CourseScheduleService css;
-
-    @Autowired
-    private StudentAttendanceDao sad;
-
-    @Autowired
-    private ClassGroupDao cgd;
-
-    @Autowired
-    private CourseScheduleDao csd;
-
-    @Autowired
-    private VipGroupDao vipGroupDao;
-    @Autowired
-    private MusicGroupStudentFeeDao studentFeeDao;
-
-    @Test
-    public void test(){
-
-        String url = "http://auth-server/queryUserInfo";
-
-        HttpHeaders headers = new HttpHeaders();
-        headers.add("Authorization", "bearer " + SecurityUtils.getAuthentication());
-        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
-
-        HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<MultiValueMap<String, String>>(null, headers);
-        ResponseEntity<String> resp = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
-
-        System.out.println("---------"+resp);
-    }
-
-    @Test
-    public void test1(){
-        List<StudentAttendance> sas=new ArrayList<>();
-        StudentAttendance sa=new StudentAttendance();
-        sa.setClassGroupId(1);
-        sa.setCourseScheduleId(1L);
-        sa.setMusicGroupId("1");
-        sa.setRemark("test");
-        sa.setStatus(StudentAttendanceStatusEnum.LEAVE);
-        sa.setTeacherId(1);
-        sa.setUserId(1);
-        sas.add(sa);
-        sad.addStudentAttendances(sas);
-    }
-
-    @Test
-    public void test2() throws ParseException {
-        System.out.println(new StringBuilder("2019-09-11 15:10:01").toString());
-        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").parse("2019-09-11 15:10:01"));
-        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(new StringBuilder("2019-09-11 15:10:01").toString()));
-    }
-
-    @Test
-    public void test3() throws ParseException {
-        List<CourseSchedule> courseSchedules=new ArrayList<>();
-        CourseSchedule cs1=new CourseSchedule();
-        cs1.setClassDate(new SimpleDateFormat("yyyy-MM-dd").parse("2019-09-17"));
-        cs1.setStartClassTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2019-09-17 15:00:00"));
-        cs1.setClassGroupId(1);
-        courseSchedules.add(cs1);
-        CourseSchedule cs2=new CourseSchedule();
-        cs2.setClassDate(new SimpleDateFormat("yyyy-MM-dd").parse("2019-09-17"));
-        cs2.setStartClassTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2019-09-17 15:00:00"));
-        cs2.setClassGroupId(1);
-        courseSchedules.add(cs2);
-        CourseSchedule cs3=new CourseSchedule();
-        cs3.setClassDate(new SimpleDateFormat("yyyy-MM-dd").parse("2019-09-17"));
-        cs3.setStartClassTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2019-09-17 16:00:00"));
-        cs3.setClassGroupId(1);
-        courseSchedules.add(cs3);
-        Map<Date, List<CourseSchedule>> collect = courseSchedules.stream().collect(
-                Collectors.groupingBy(CourseSchedule::getClassDate));
-        for(Date keyDate:collect.keySet()){
-            List<CourseSchedule> currentCourses=collect.get(keyDate);
-            Map<Date, List<CourseSchedule>> collect1 = currentCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getStartClassTime));
-            System.out.println(collect1.size());
-        }
-    }
-
-    @Test
-    public void test4(){
-        List<Integer> temp=new ArrayList<>();
-        temp.add(1);
-        temp.add(2);
-        Integer[] integers = csd.countStudentInClass(temp);
-        System.out.println(integers.length);
-    }
-
-    @Test
-    public void test5() throws ParseException {
-        List<CourseScheduleDto> courseSchedules = csd.getCourseSchedulesWithDate(new SimpleDateFormat("yyyyMMdd").parse("20190912"));
-        System.out.println(courseSchedules.size());
-    }
-
-    @Test
-    public void test6(){
-        StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(1L);
-        System.out.println(vipGroupDetail.getAvatar());
-    }
-
-    @Test
-    public void test7(){
-        int i = studentFeeDao.updateStudentAbsenteeismTimes(1, "1", 0);
-        System.out.println(i);
-    }
-
-}

+ 5 - 5
mec-workflow/src/main/java/com/ym/mec/workfow/controller/web/LeaveController.java

@@ -35,7 +35,7 @@ public class LeaveController extends BaseController {
 		SysUser user = SysUserFeignService.queryUserInfo();
 
 		Map<String, Object> params = new HashMap<String, Object>();
-		params.put("applyer", user.getUsername());
+		params.put("applyer", user.getId());
 		params.put("days", days);
 		params.put("deptManager", deptManager);
 		params.put("boss", boss);
@@ -44,9 +44,9 @@ public class LeaveController extends BaseController {
 		Order order = snakerEngine.startInstanceById(processId, user.getUsername(), params);
 
 		// 获取当前任务
-		List<Task> tasks = snakerEngine.query().getActiveTasks(new QueryFilter().setOrderId(order.getId()).setOperator(user.getUsername()));
+		List<Task> tasks = snakerEngine.query().getActiveTasks(new QueryFilter().setOrderId(order.getId()).setOperator(user.getId() + ""));
 		for (Task task : tasks) {
-			snakerEngine.executeTask(task.getId(), user.getUsername());
+			snakerEngine.executeTask(task.getId(), user.getId() + "");
 		}
 
 		return succeed();
@@ -67,10 +67,10 @@ public class LeaveController extends BaseController {
 
 		// 审批同意
 		if (isAgree) {
-			tasks = snakerEngine.executeTask(taskId, user.getUsername(), params);
+			tasks = snakerEngine.executeTask(taskId, user.getId() + "", params);
 		} else {
 			// 审批驳回
-			tasks = snakerEngine.executeAndJumpTask(taskId, user.getUsername(), params, null);
+			tasks = snakerEngine.executeAndJumpTask(taskId, user.getId() + "", params, null);
 		}
 		if (tasks.size() == 0) {
 			System.out.println("**********流程已结束*********");

+ 1 - 1
workflowy/src/main/java/org/snaker/engine/core/TaskService.java

@@ -543,7 +543,7 @@ public class TaskService extends AccessService implements ITaskService {
 		strategy = ServiceContext.find(TaskAccessStrategy.class);
 		if(strategy == null) {
 			ServiceContext.put(TaskAccessStrategy.class.getName(), GeneralAccessStrategy.class);
-            strategy = ServiceContext.find(TaskAccessStrategy.class);
+            strategy = ServiceContext.find(GeneralAccessStrategy.class);
 		}
 		return strategy;
 	}

+ 0 - 2
workflowy/src/main/java/org/snaker/engine/impl/GeneralAccessStrategy.java

@@ -19,7 +19,6 @@ import java.util.List;
 
 import org.snaker.engine.TaskAccessStrategy;
 import org.snaker.engine.entity.TaskActor;
-import org.springframework.stereotype.Component;
 
 /**
  * 基于用户或组(角色、部门等)的访问策略类
@@ -27,7 +26,6 @@ import org.springframework.stereotype.Component;
  * @author yuqs
  * @since 1.4
  */
-@Component
 public class GeneralAccessStrategy implements TaskAccessStrategy {
 	/**
 	 * 根据操作人id确定所有的组集合