浏览代码

1、陪练课调整
2、付费陪练课可预约时间调整

Joburgess 5 年之前
父节点
当前提交
42f80925a0

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -657,6 +657,17 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
                       @Param("groupType")GroupType groupType);
 
     /**
+     * @describe 根据团体删除班级-逻辑删除
+     * @author Joburgess
+     * @date 2020/3/4
+     * @param groupId:
+     * @param groupType:
+     * @return int
+     */
+    int deleteByGroupWithLogic(@Param("groupId") String groupId,
+                               @Param("groupType") GroupType groupType);
+
+    /**
      * 获取vip所有班级列表
      * @param vipGroupIds
      * @return

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java

@@ -71,6 +71,17 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
                       @Param("groupType") GroupType groupType);
 
     /**
+     * @describe 根据团体删除班上的学生-退学
+     * @author Joburgess
+     * @date 2020/2/17
+     * @param groupId:
+     * @param groupType:
+     * @return int
+     */
+    int deleteByGroupWithLogic(@Param("groupId") String groupId,
+                      @Param("groupType") GroupType groupType);
+
+    /**
      * @return int
      * @Author: Joburgess
      * @Date: 2019/10/17

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

@@ -227,6 +227,17 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
                       @Param("groupType") GroupType groupType);
 
     /**
+     * @describe 获取团体下未开始的课程
+     * @author Joburgess
+     * @date 2020/3/4
+     * @param groupId:
+     * @param groupType:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+     */
+    List<CourseSchedule> findGroupNotStartCourses(@Param("groupId") String groupId,
+                                                  @Param("groupType") GroupType groupType);
+
+    /**
      * 逻辑删除乐团课程
      *
      * @param musicGroupID

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

@@ -29,7 +29,7 @@ public interface GroupClassService {
     boolean deleteGroupOtherInfo(String groupId, GroupType groupType);
 
     /**
-     * @describe 清理团相关信息
+     * @describe 清理团相关信息
      * @author Joburgess
      * @date 2020/2/17
      * @param groupId: 团体编号

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

@@ -8,6 +8,7 @@ import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -252,4 +253,14 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
 	 * @return void
 	 */
 	void pushStudyReport(Date expiredDate,String pushType);
+
+	/**
+	 * @describe 关闭网管课
+	 * @author Joburgess
+	 * @date 2020/3/4
+	 * @param groupId: 网管课编号
+	 * @param refundAmount: 退款金额
+	 * @return void
+	 */
+	void cancelPracticeGroup(Long groupId, BigDecimal refundAmount);
 }

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

@@ -1,11 +1,16 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.service.GroupClassService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @Author Joburgess
@@ -67,8 +72,20 @@ public class GroupClassServiceImpl implements GroupClassService {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean cleanGroupInfo(String groupId, GroupType groupType) {
-
-        return false;
+        classGroupDao.deleteByGroupWithLogic(groupId,groupType);
+        classGroupStudentMapperDao.deleteByGroupWithLogic(groupId,groupType);
+        List<CourseSchedule> groupNotStartCourses = courseScheduleDao.findGroupNotStartCourses(groupId, groupType);
+        if(CollectionUtils.isEmpty(groupNotStartCourses)){
+            return true;
+        }
+        List<Long> courseIds = groupNotStartCourses.stream().map(CourseSchedule::getId).collect(Collectors.toList());
+        courseScheduleDao.batchDeleteCourseSchedules(courseIds);
+        courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseIds);
+        courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseIds);
+        teacherAttendanceDao.batchDeleteByCourseSchedules(courseIds);
+        studentAttendanceDao.deleteByCourseSchedules(courseIds);
+        return true;
     }
 }

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -3437,4 +3437,29 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             courseScheduleEvaluateDao.update(report);
         }
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+    public void cancelPracticeGroup(Long groupId, BigDecimal refundAmount) {
+        if(Objects.isNull(groupId)){
+            throw new BizException("请指定课程组");
+        }
+        PracticeGroup practiceGroup = practiceGroupDao.get(groupId);
+        if(Objects.isNull(practiceGroup)){
+            throw new BizException("指定的课程组不存在");
+        }
+        Date now=new Date();
+        if(!practiceGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL)||practiceGroup.getCoursesExpireDate().before(now)){
+            throw new BizException("当前课程组不可关闭");
+        }
+        if(Objects.isNull(refundAmount)){
+            throw new BizException("请指定退款金额");
+        }
+        sysUserCashAccountService.updateBalance(practiceGroup.getStudentId(), refundAmount, PlatformCashAccountDetailTypeEnum.REFUNDS, "后团关闭网管课");
+        groupService.cleanGroupInfo(groupId.toString(), GroupType.PRACTICE);
+        practiceGroup.setMemo("后台关闭网管课");
+        practiceGroup.setGroupStatus(GroupStatusEnum.CANCEL);
+        practiceGroup.setUpdateTime(now);
+        practiceGroupDao.update(practiceGroup);
+    }
 }

+ 5 - 1
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -83,6 +83,10 @@
         DELETE FROM class_group WHERE music_group_id_=#{groupId} AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
     </delete>
 
+    <update id="deleteByGroupWithLogic">
+        UPDATE class_group SET del_flag_=1,update_time_=NOW() WHERE music_group_id_=#{groupId} AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+    </update>
+
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="ClassGroup">
         SELECT * FROM class_group WHERE id_ = #{id}
@@ -447,7 +451,7 @@
         <result column="online_classes_num_" property="onlineClassesNum"/>
         <result column="offline_classes_num_" property="offLineClassesNum"/>
         <result property="type" column="type_"/>
-        <result property="courseStartDate" column="courses_start_date"/>
+        <result property="courseStartDate" column="courses_start_date_"/>
         <result property="classMode" column="class_mode_"/>
     </resultMap>
 

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml

@@ -67,6 +67,10 @@
         DELETE FROM class_group_student_mapper WHERE music_group_id_=#{groupId} AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
     </delete>
 
+    <update id="deleteByGroupWithLogic">
+        UPDATE class_group_student_mapper SET status_='QUIT',update_time_=NOW() WHERE music_group_id_=#{groupId} AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+    </update>
+
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="ClassGroupStudentMapper" parameterType="map">
         SELECT * FROM class_group_student_mapper ORDER BY id_

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

@@ -2588,4 +2588,7 @@
         GROUP BY class_group_id_
         )
     </select>
+    <select id="findGroupNotStartCourses" resultMap="CourseSchedule">
+        SELECT * FROM course_schedule WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} AND music_group_id_ = #{groupId} AND CONCAT(class_date_, ' ', start_class_time_)>NOW()
+    </select>
 </mapper>

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

@@ -54,6 +54,9 @@
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.PracticeGroup">
 		UPDATE practice_group
 		<set>
+			<if test="memo!=null">
+				memo_=#{memo},
+			</if>
 			<if test="groupStatus!=null">
 				group_status_=#{groupStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 			</if>

+ 18 - 13
mec-web/src/main/java/com/ym/mec/web/controller/PracticeGroupManageController.java

@@ -3,27 +3,24 @@ 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.dao.EmployeeDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
-import com.ym.mec.biz.dal.dto.VipGroupApplyBaseInfoDto;
-import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
-import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.entity.StudentApplyRefunds.StudentApplyRefundsStatus;
-import com.ym.mec.biz.dal.enums.AuditStatusEnum;
-import com.ym.mec.biz.dal.page.*;
-import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.page.PracticeGroupQueryInfo;
+import com.ym.mec.biz.service.PracticeGroupService;
 import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.*;
+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.math.BigDecimal;
-import java.util.*;
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * @Author Joburgess
@@ -71,4 +68,12 @@ public class PracticeGroupManageController extends BaseController {
     public Object findPracticeGroupCourseSchedules(PracticeGroupQueryInfo queryInfo){
         return succeed(practiceGroupService.findPracticeGroupCourseSchedules(queryInfo));
     }
+
+    @ApiOperation(value = "关闭网管课")
+    @PostMapping(value = "/cancelPracticeGroup")
+    @PreAuthorize("@pcs.hasPermissions('practiceGroupManage/cancelPracticeGroup')")
+    public HttpResponseResult cancelPracticeGroup(Long groupId, BigDecimal refundAmount){
+        practiceGroupService.cancelPracticeGroup(groupId,refundAmount);
+        return succeed();
+    }
 }