Joburgess 5 jaren geleden
bovenliggende
commit
9a3082e6e0
17 gewijzigde bestanden met toevoegingen van 279 en 39 verwijderingen
  1. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  2. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java
  3. 9 8
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleTeacherSalary.java
  4. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/StudentAttendanceStatusEnum.java
  5. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentAttendanceQueryInfo.java
  6. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java
  7. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  8. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java
  9. 145 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  10. 9 2
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  11. 9 2
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  12. 15 6
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  13. 4 3
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  14. 24 3
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  15. 2 3
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherVipGroupController.java
  16. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultVipGroupSalaryController.java
  17. 15 0
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

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

@@ -3,7 +3,17 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
 import com.ym.mec.common.dal.BaseDAO;
 
+import java.util.List;
+
 public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseScheduleStudentPayment> {
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/10
+     * @params [courseScheduleStudentPayments]
+     * @return int
+     * @describe 批量插入
+     */
+    int batchInsert(List<CourseScheduleStudentPayment> courseScheduleStudentPayments);
 	
 }

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

@@ -3,7 +3,17 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.common.dal.BaseDAO;
 
+import java.util.List;
+
 public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseScheduleTeacherSalary> {
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/10
+     * @params [courseScheduleTeacherSalaries]
+     * @return int
+     * @describe 批量插入
+     */
+    int batchInsert(List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries);
 	
 }

+ 9 - 8
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleTeacherSalary.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.biz.dal.enums.TeachTypeEnum;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
@@ -14,7 +15,7 @@ public class CourseScheduleTeacherSalary {
 	private Long courseScheduleId;
 	
 	/** 老师角色(主教、助教) */
-	private String teacherRole;
+	private TeachTypeEnum teacherRole;
 	
 	/**  */
 	private Integer userId;
@@ -52,15 +53,15 @@ public class CourseScheduleTeacherSalary {
 	public Long getCourseScheduleId(){
 		return this.courseScheduleId;
 	}
-			
-	public void setTeacherRole(String teacherRole){
-		this.teacherRole = teacherRole;
+
+	public TeachTypeEnum getTeacherRole() {
+		return teacherRole;
 	}
-	
-	public String getTeacherRole(){
-		return this.teacherRole;
+
+	public void setTeacherRole(TeachTypeEnum teacherRole) {
+		this.teacherRole = teacherRole;
 	}
-			
+
 	public void setUserId(Integer userId){
 		this.userId = userId;
 	}

+ 0 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/StudentAttendanceStatusEnum.java

@@ -9,7 +9,6 @@ public enum StudentAttendanceStatusEnum implements BaseEnum<String,StudentAttend
     NORMAL("NORMAL","正常"),
     TRUANT("TRUANT","旷课"),
     LEAVE("LEAVE","请假"),
-    QUIT_SCHOOL("QUIT_SCHOOL","休学"),
     DROP_OUT("DROP_OUT","退学");
 
     private String code;

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentAttendanceQueryInfo.java

@@ -23,6 +23,17 @@ public class StudentAttendanceQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "状态(正常、旷课、请假、休学)",required = false)
     private StudentAttendanceStatusEnum status;
 
+    @ApiModelProperty(value = "过滤状态")
+    private StudentAttendanceStatusEnum filterStatus;
+
+    public StudentAttendanceStatusEnum getFilterStatus() {
+        return filterStatus;
+    }
+
+    public void setFilterStatus(StudentAttendanceStatusEnum filterStatus) {
+        this.filterStatus = filterStatus;
+    }
+
     public Long getStudentID() {
         return studentID;
     }

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

@@ -10,6 +10,8 @@ import com.ym.mec.biz.dal.page.VipGroupTeachingRecordQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.math.BigDecimal;
+
 public interface VipGroupService extends BaseService<Long, VipGroup> {
 
     /**
@@ -77,6 +79,15 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
 
     /**
      * @Author: Joburgess
+     * @Date: 2019/10/10
+     * @params [vipGroup, onlineClassesUnitPrice, offlineClassesUnitPrice]
+     * @return java.math.BigDecimal
+     * @describe 计算课程购买总价
+     */
+    BigDecimal countVipGroupPredictFee(VipGroup vipGroup,BigDecimal onlineClassesUnitPrice,BigDecimal offlineClassesUnitPrice);
+
+    /**
+     * @Author: Joburgess
      * @Date: 2019/10/3
      * @params [queryInfo]
      * @return com.ym.mec.common.page.PageInfo

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

@@ -397,6 +397,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 	@Override
 	public void courseScheduleCommplaintAudit(CourseScheduleComplaints courseScheduleComplaints) {
+		if(Objects.isNull(courseScheduleComplaints.getId())){
+			throw new BizException("请指定投诉记录!");
+		}
 		CourseScheduleComplaints newCourseScheduleComplaints=new CourseScheduleComplaints();
 		newCourseScheduleComplaints.setId(courseScheduleComplaints.getId());
 		newCourseScheduleComplaints.setStatus(courseScheduleComplaints.getStatus());

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java

@@ -30,6 +30,7 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 		if(Objects.isNull(vipGroupActivityAddDto.getOrganId())){
 			throw new BizException("请指定部门!");
 		}
+
 		vipGroupActivityAddDto.setSalarySettlementJson(JSON.toJSONString(vipGroupActivityAddDto.getVipGroupSalarySettlement()));
 		super.insert(vipGroupActivityAddDto);
 	}

+ 145 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -60,6 +60,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	private SysUserCashAccountDao sysUserCashAccountDao;
     @Autowired
 	private SysUserCashAccountDetailDao sysUserCashAccountDetailDao;
+    @Autowired
+	private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao;
+    @Autowired
+	private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
+    @Autowired
+	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
 
 	@Override
 	public BaseDAO<Long, VipGroup> getDAO() {
@@ -88,8 +94,10 @@ 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课信息
+
+		//生成vip课信息
 		VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto=vipGroup.getVipGroupApplyBaseInfo();
 		vipGroupApplyBaseInfoDto.setTotalPrice(countVipGroupPredictFee(vipGroupApplyBaseInfoDto,
 				vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice(),
@@ -116,16 +124,17 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		//创建班级老师关联记录
 		ClassGroupTeacherMapper classGroupTeacherMapper=new ClassGroupTeacherMapper();
-		classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.TEACHING);
+		classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP);
 		classGroupTeacherMapper.setUserId(Integer.parseInt(vipGroupApplyBaseInfoDto.getTeacherId().toString()));
 		classGroupTeacherMapperDao.insert(classGroupTeacherMapper);
 
 		//创建班级与老师课酬记录
 		ClassGroupTeacherSalary classGroupTeacherSalary=new ClassGroupTeacherSalary();
-		classGroupTeacherSalary.setTeacherRole(TeachTypeEnum.TEACHING);
+		classGroupTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
 		classGroupTeacherSalary.setUserId(Integer.parseInt(vipGroupApplyBaseInfoDto.getTeacherId().toString()));
 		classGroupTeacherSalary.setSalary(vipGroupApplyBaseInfoDto.getOfflineTeacherSalary());
-
+		classGroupTeacherSalary.setOnlineClassesSalary(vipGroupApplyBaseInfoDto.getOnlineTeacherSalary());
+		classGroupTeacherSalaryDao.insert(classGroupTeacherSalary);
 
 		//课程信息调整
 		vipGroup.getCourseSchedules().forEach(courseSchedule -> {
@@ -138,11 +147,125 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		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));
-		vipGroup.getCourseSchedules().forEach(courseSchedule -> {
-			CourseScheduleTeacherSalary courseScheduleTeacherSalary=new CourseScheduleTeacherSalary();
-		});
+		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);
 	}
 
 	@Override
@@ -358,7 +481,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
      * @Date: 2019/10/2
      * 计算VIP课程预计收费
      */
-    private BigDecimal countVipGroupPredictFee(VipGroup vipGroup,BigDecimal onlineClassesUnitPrice,BigDecimal offlineClassesUnitPrice){
+    @Override
+    public BigDecimal countVipGroupPredictFee(VipGroup vipGroup,BigDecimal onlineClassesUnitPrice,BigDecimal offlineClassesUnitPrice){
 		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
 		if(Objects.isNull(vipGroup)){
 			throw new BizException("该课未指定活动方案");
@@ -367,7 +491,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
 		BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
 		BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
-		BigDecimal totalPrice=null;
+		BigDecimal totalPrice;
 		switch (vipGroupActivity.getType()){
 			case BASE_ACTIVITY:
 				totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
@@ -378,7 +502,18 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				totalPrice=totalPrice.multiply(discount);
 				break;
 			case GIVE_CLASS:
-
+				if(vipGroup.getGiveTeachMode()==TeachModeEnum.OFFLINE){
+					if(offlineClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
+						offlineClassNum=offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
+					}
+					offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
+				}else{
+					if(onlineClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
+						onlineClassNum=onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
+					}
+					onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
+				}
+				totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
 				break;
 			default:
 				throw new BizException("活动类型错误!");

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

@@ -36,8 +36,15 @@
 		-->
 		INSERT INTO course_schedule_student_payment (id_,course_schedule_id_,user_id_,expect_price_,actual_price_,create_time_,update_time_,settlement_time_) VALUES(#{id},#{courseScheduleId},#{userId},#{expectPrice},#{actualPrice},#{createTime},#{updateTime},#{settlementTime})
 	</insert>
-	
-	<!-- 根据主键查询一条记录 -->
+    <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
+		INSERT INTO course_schedule_student_payment (id_,course_schedule_id_,user_id_,expect_price_,actual_price_,create_time_,update_time_,settlement_time_)
+		VALUE
+		<foreach collection="list" item="data" separator=",">
+			(#{data.id},#{data.courseScheduleId},#{data.userId},#{data.expectPrice},#{data.actualPrice},now(),now(),#{data.settlementTime})
+		</foreach>
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment">
 		UPDATE course_schedule_student_payment <set>
 <if test="userId != null">

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

@@ -38,8 +38,15 @@
 		-->
 		INSERT INTO course_schedule_teacher_salary (id_,course_schedule_id_,teacher_role_,user_id_,expect_salary_,create_time_,create_update_,subsidy_,actual_salary_,settlement_time_) VALUES(#{id},#{courseScheduleId},#{teacherRole},#{userId},#{expectSalary},#{createTime},#{createUpdate},#{subsidy},#{actualSalary},#{settlementTime})
 	</insert>
-	
-	<!-- 根据主键查询一条记录 -->
+    <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
+		INSERT INTO course_schedule_teacher_salary (id_,course_schedule_id_,teacher_role_,user_id_,expect_salary_,create_time_,create_update_,subsidy_,actual_salary_,settlement_time_)
+		VALUE
+		<foreach collection="list" item="data" separator=",">
+			(#{data.id},#{data.courseScheduleId},#{data.teacherRole},#{data.userId},#{data.expectSalary},now(),now(),#{data.subsidy},#{data.actualSalary},#{data.settlementTime})
+		</foreach>
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary">
 		UPDATE course_schedule_teacher_salary <set>
 <if test="userId != null">

+ 15 - 6
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -97,6 +97,15 @@
         <result property="status" column="status_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
+    <sql id="queryPageCondition">
+        <where>
+            cgsm.class_group_id_=#{classGroupId}
+            <if test="filterStatus!=null">
+                AND cgsm.status_!=#{filterStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+        </where>
+    </sql>
+
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="studentAttendanceViewUtilEntity" parameterType="map">
         SELECT
@@ -108,12 +117,12 @@
         s.name_ subject_name_,
         cgsm.status_
         FROM
-        class_group cg
-        LEFT JOIN class_group_student_mapper cgsm ON cg.id_=cgsm.class_group_id_
+        class_group_student_mapper cgsm
+        LEFT JOIN class_group cg ON cg.id_ = cgsm.class_group_id_
         LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
         LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
-        LEFT JOIN `subject` s ON cg.subject_id_=s.id_
-        WHERE cgsm.class_group_id_=#{classId}
+        LEFT JOIN `subject` s ON cg.subject_id_list_=s.id_
+        <include refid="queryPageCondition"/>
         <include refid="global.limit"/>
     </select>
 
@@ -125,8 +134,8 @@
         LEFT JOIN class_group_student_mapper cgsm ON cg.id_=cgsm.class_group_id_
         LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
         LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
-        LEFT JOIN `subject` s ON cg.subject_id_=s.id_
-        WHERE cgsm.class_group_id_=#{classId}
+        LEFT JOIN `subject` s ON cg.subject_id_list_=s.id_
+        <include refid="queryPageCondition"/>
 	</select>
 
     <select id="countStudentStatus" resultType="com.ym.mec.biz.dal.dto.StudentStatusCountUtilEntity">

+ 4 - 3
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -134,8 +134,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_)
-        VALUES(#{id},#{userId},#{singleClassMinutes},#{paymentExpireDate},#{coursesExpireDate},now(),now(),#{teacherSchoolId},#{onlineClassesNum},#{offlineClassesNum},#{registrationStartTime},#{organIdList},#{vipGroupActivityId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{onlineClassesUnitPrice},#{offline_classes_unit_price_},#{total_price_})
+        (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},#{offline_classes_unit_price_},#{total_price_},#{giveTeachMode})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -452,7 +452,8 @@
         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} AND cs.give_teach_mode_=1
+            LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
+        WHERE vgcgm.vip_group_id_=#{vipGroupId} AND csts.settlement_time_ IS NOT NULL
     </select>
     <select id="countComplaintsNum" resultType="java.lang.Integer">
         SELECT

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

@@ -1,6 +1,7 @@
 package com.ym.mec.teacher.controller;
 
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
+import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.StudentAttendanceService;
@@ -9,17 +10,19 @@ 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.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
+import java.util.Objects;
 
 /**
  * @Author Joburgess
  * @Date 2019/9/27
  */
-@RequestMapping("teacherCourseSchedule")
 @Api(tags = "课程计划服务")
+@RequestMapping("teacherCourseSchedule")
 @RestController
 public class TeacherCourseScheduleController extends BaseController {
 
@@ -31,31 +34,46 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation(value = "根据月份获取乐团在该月有课的日期")
     @GetMapping("/getCourseScheduleDateByMonth")
     public Object getCourseScheduleDateByMonth(@ApiParam(value = "月份", required = true) @RequestParam Date month) {
+        if(Objects.isNull(month)){
+            return failed(HttpStatus.FORBIDDEN, "请指定日期!");
+        }
         return succeed(scheduleService.getCourseScheduleDateByTeacher(month));
     }
 
     @ApiOperation(value = "根据日期获取当日排课")
     @GetMapping("/getCourseSchedulesWithDate")
     public Object getCourseSchedulesWithDate(@ApiParam(value = "日期", required = true) Date date){
+        if(Objects.isNull(date)){
+            return failed(HttpStatus.FORBIDDEN, "请指定日期!");
+        }
         return succeed(scheduleService.getTeacherCourseSchedulesWithDate(date));
     }
 
     @ApiOperation(value = "根据课程ID查询正在或即将开始的课程")
     @GetMapping("/getCurrentCourseDetail/{courseID}")
     public Object getCurrentCourseDetail(@ApiParam(value = "课程ID", required = true) @PathVariable("courseID") Long courseID){
+        if(Objects.isNull(courseID)){
+            return failed(HttpStatus.FORBIDDEN, "请指定课程!");
+        }
         return succeed(scheduleService.getCurrentCourseDetail(courseID));
     }
 
     @ApiOperation(value = "根据班级ID获取当前课程的学生")
     @GetMapping("/getCurrentCourseStudents")
-    public Object getCurrentCourseStudents(@RequestBody StudentAttendanceQueryInfo queryInfo){
+    public Object getCurrentCourseStudents(StudentAttendanceQueryInfo queryInfo){
+        if(Objects.isNull(queryInfo.getClassGroupId())){
+            return failed(HttpStatus.FORBIDDEN, "请指定班级!");
+        }
+        queryInfo.setFilterStatus(StudentAttendanceStatusEnum.DROP_OUT);
         return succeed(studentAttendanceService.getCurrentCourseStudents(queryInfo));
     }
 
-
     @ApiOperation(value = "课时调整")
     @PostMapping(value = "/classStartDateAdjust",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public Object classStartDateAdjust(ClassDateAdjustDto classDateAdjustDto){
+        if(Objects.isNull(classDateAdjustDto.getId())){
+            return failed(HttpStatus.FORBIDDEN, "请指定课程!");
+        }
         scheduleService.classStartDateAdjust(classDateAdjustDto);
         return succeed();
     }
@@ -63,6 +81,9 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation(value = "课时交换")
     @GetMapping(value = "/courseSwap",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public Object courseSwap(Long courseScheduleId1,Long courseScheduleId2){
+        if(Objects.isNull(courseScheduleId1)||Objects.isNull(courseScheduleId2)){
+            return failed(HttpStatus.FORBIDDEN, "请指定课程!");
+        }
         scheduleService.courseSwap(courseScheduleId1,courseScheduleId2);
         return succeed();
     }

+ 2 - 3
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherVipGroupController.java

@@ -3,12 +3,10 @@ package com.ym.mec.teacher.controller;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
-import com.ym.mec.biz.dal.dto.VipGroupBuyParamsDto;
 import com.ym.mec.biz.dal.dto.VipGroupCostCountParamsDto;
 import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -43,7 +41,8 @@ public class TeacherVipGroupController extends BaseController {
     @ApiOperation("获取vip课课程和课酬总费用")
     @PostMapping("/getVipGroupCostCount")
     public Object getVipGroupCostCount(VipGroupCostCountParamsDto vipGroupCostCountParamsDto){
-        return succeed(vipGroupService.vipGroupCostCount(vipGroupCostCountParamsDto));
+//        return succeed(vipGroupService.vipGroupCostCount(vipGroupCostCountParamsDto));
+        return succeed();
     }
 
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherDefaultVipGroupSalaryController.java → mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultVipGroupSalaryController.java

@@ -1,4 +1,4 @@
-package com.ym.mec.biz.dal.entity;
+package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.service.TeacherDefaultVipGroupSalaryService;
 import com.ym.mec.common.controller.BaseController;

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

@@ -2,6 +2,7 @@ package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
 import com.ym.mec.biz.dal.entity.StudentApplyRefunds;
+import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupTeachingRecordQueryInfo;
@@ -12,6 +13,10 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * @Author Joburgess
  * @Date 2019/9/21
@@ -80,4 +85,14 @@ public class VipGroupManageController extends BaseController {
     public Object findTeachingRecordBaseInfo(Long vipGroupId){
         return succeed(vipGroupService.findTeachingRecordBaseInfo(vipGroupId));
     }
+
+    @ApiOperation("课酬总费用")
+    @PostMapping("/getVipGroupCostCount")
+    public Object getVipGroupCostCount(VipGroup vipGroup){
+        BigDecimal bigDecimal = vipGroupService.countVipGroupPredictFee(vipGroup, vipGroup.getOnlineClassesUnitPrice(), vipGroup.getOfflineClassesUnitPrice());
+        Map<String,BigDecimal> results=new HashMap<>(1);
+        results.put("totalPrice",bigDecimal);
+        return succeed(results);
+    }
+
 }