Parcourir la source

update:基础技能班线上课课酬;课堂课、基础技能课 按节结算课酬

yonge il y a 5 ans
Parent
commit
ab8108d443

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

@@ -95,7 +95,7 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
      * @author Joburgess
      * @date 2019/10/18
      */
-    String[] findStudentNumByClassGroupId(@Param("classGroupId") Long classGroupId);
+    String[] findStudentNumByClassGroupId(@Param("classGroupId") Integer classGroupId);
 
     /**
      * @describe 获取课程上的学员名称集合

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

@@ -44,7 +44,7 @@ public interface ClassGroupTeacherMapperDao extends BaseDAO<Long, ClassGroupTeac
      * @Date: 2019/10/18
      * @describe 根据班级编号和教师类型获取老师信息
      */
-    ClassGroupTeacherMapper findByClassGroupAndRole(@Param("classGroupId") Long classGroupId,
+    ClassGroupTeacherMapper findByClassGroupAndRole(@Param("classGroupId") Integer classGroupId,
                                                     @Param("teacherRole") TeachTypeEnum teacherRole);
 
     /**
@@ -83,7 +83,7 @@ public interface ClassGroupTeacherMapperDao extends BaseDAO<Long, ClassGroupTeac
      * @param classGroupId
      * @return
      */
-    String queryTeachingNames(Long classGroupId);
+    String queryTeachingNames(Integer classGroupId);
 
     /**
      * @param classGroupIds: 班级编号列表

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

@@ -13,7 +13,7 @@ import java.util.Date;
 public class TeacherClassGroupDto {
 
     @ApiModelProperty(value = "班级编号")
-    private Long classGroupId;
+    private Integer classGroupId;
 
     @ApiModelProperty(value = "班级名称")
     private String classGroupName;
@@ -197,11 +197,11 @@ public class TeacherClassGroupDto {
         this.subjectIdList = subjectIdList;
     }
 
-    public Long getClassGroupId() {
+    public Integer getClassGroupId() {
         return classGroupId;
     }
 
-    public void setClassGroupId(Long classGroupId) {
+    public void setClassGroupId(Integer classGroupId) {
         this.classGroupId = classGroupId;
     }
 

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

@@ -31,7 +31,7 @@ public class CourseSchedule {
 
 		SINGLE("SINGLE", "单技课"), MIX("MIX", "合奏课"), HIGH("HIGH", "小班课"), VIP("VIP", "vip课"), DEMO("DEMO", "试听课"), COMPREHENSIVE("COMPREHENSIVE", "综合课"), PRACTICE(
 				"PRACTICE", "网管课"), ENLIGHTENMENT("ENLIGHTENMENT", "启蒙课"), TRAINING_SINGLE("TRAINING_SINGLE", "集训单技课"), TRAINING_MIX("TRAINING_MIX", "集训合奏课"), CLASSROOM(
-				"CLASSROOM", "课堂课"),COMM("COMM","对外课程"),TRIAL("TRIAL","试听课");
+				"CLASSROOM", "课堂课"),COMM("COMM","对外课程"),HIGH_ONLINE("HIGH_ONLINE","线上小班课");
 
 		private String code;
 

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherDefaultMusicGroupSalary.java

@@ -38,6 +38,9 @@ public class TeacherDefaultMusicGroupSalary {
 	/** 助教薪酬 */
 	@ApiModelProperty(value = "助教30分钟课酬",required = false)
 	private BigDecimal assistantTeacher30MinSalary;
+	
+	@ApiModelProperty(value = "课酬规则",required = false)
+	private String salaryRuleJson;
 
 	/**  */
 	private java.util.Date createTime;
@@ -101,6 +104,14 @@ public class TeacherDefaultMusicGroupSalary {
 		this.assistantTeacher30MinSalary = assistantTeacher30MinSalary;
 	}
 
+	public String getSalaryRuleJson() {
+		return salaryRuleJson;
+	}
+
+	public void setSalaryRuleJson(String salaryRuleJson) {
+		this.salaryRuleJson = salaryRuleJson;
+	}
+
 	public Date getCreateTime() {
 		return createTime;
 	}

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

@@ -3,7 +3,7 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum ClassGroupStudentStatusEnum implements BaseEnum<String, ClassGroupStudentStatusEnum> {
-    NORMAL("NORMAL", "在读"), LEAVE("LEAVE", "请假"), QUIT("QUIT", "退班"), QUIT_SCHOOL("QUIT_SCHOOL","休学");
+    NORMAL("NORMAL", "在读"), QUIT("QUIT", "退班"), QUIT_SCHOOL("QUIT_SCHOOL","休学");
 
     private String code;
 

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

@@ -225,7 +225,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @return com.ym.mec.biz.dal.dto.TeacherClassHeadInfo
      * @describe 获取班级信息
      */
-    TeacherClassHeadInfo findTeacherClassGroupInfo(Long classGroupId);
+    TeacherClassHeadInfo findTeacherClassGroupInfo(Integer classGroupId);
 
     /**
      * @describe 获取班级对应学生列表

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

@@ -1108,7 +1108,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public TeacherClassHeadInfo findTeacherClassGroupInfo(Long classGroupId) {
+    public TeacherClassHeadInfo findTeacherClassGroupInfo(Integer classGroupId) {
         if (Objects.isNull(classGroupId)) {
             throw new BizException("请指定班级");
         }
@@ -2264,7 +2264,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             List<String> subjects = subjectService.findBySubIds(highClassGroup.getSubjectIdList());
             highClassGroup.setSubjectName(subjects.stream().collect(Collectors.joining(",")));
 
-            ClassGroupTeacherMapper bishopTeacher = classGroupTeacherMapperDao.findByClassGroupAndRole(highClassGroup.getId().longValue(), TeachTypeEnum.BISHOP);
+            ClassGroupTeacherMapper bishopTeacher = classGroupTeacherMapperDao.findByClassGroupAndRole(highClassGroup.getId(), TeachTypeEnum.BISHOP);
             highClassGroup.setTeacherName(bishopTeacher.getUserName());
             highClassGroup.setUserId(bishopTeacher.getUserId());
             CourseSchedule courseSchedule = courseScheduleDao.findOneCourseScheduleByClassGroupId(highClassGroup.getId());

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

@@ -296,7 +296,7 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
     public TeacherClassHeadInfo getCourseInfoHead(Integer id) {
         CourseSchedule courseSchedule = courseScheduleDao.get(id.longValue());
         ClassGroup classGroup = classGroupService.get(courseSchedule.getClassGroupId());
-        TeacherClassHeadInfo teacherClassGroupInfo = classGroupService.findTeacherClassGroupInfo(courseSchedule.getClassGroupId().longValue());
+        TeacherClassHeadInfo teacherClassGroupInfo = classGroupService.findTeacherClassGroupInfo(courseSchedule.getClassGroupId());
         teacherClassGroupInfo.setClassDate(DateUtil.dateToString(courseSchedule.getClassDate(), "yyyy年MM月dd日"));
         teacherClassGroupInfo.setStartClassTime(DateUtil.dateToString(courseSchedule.getStartClassTime(), "HH:mm"));
         teacherClassGroupInfo.setEndClassTime(DateUtil.dateToString(courseSchedule.getEndClassTime(), "HH:mm"));

+ 42 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultMusicGroupSalaryServiceImpl.java

@@ -15,6 +15,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
 import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
 import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dao.TeacherDefaultMusicGroupSalaryDao;
@@ -39,6 +42,9 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 
 	@Autowired
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+	
+	@Autowired
+	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
 
 	@Autowired
 	private MusicGroupDao musicGroupDao;
@@ -84,6 +90,8 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 				}*/
 				salaryMap.put(ms.getCourseScheduleType(), ms);
 			}
+			
+			Map<Integer,Integer> classGroupStudentNumMap = new HashMap<Integer, Integer>();
 
 			if (salaryMap.size() > 0) {
 
@@ -115,33 +123,52 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 								BigDecimal duration = new BigDecimal(DateUtil.minutesBetween(ts.getCourseSchedule().getStartClassTime(), ts.getCourseSchedule()
 										.getEndClassTime()));
 								int mins = 0;
-								if (musicGroup.getSettlementType() == SalarySettlementTypeEnum.GRADIENT_SALARY) {// 3.0课酬
-									mins = 90;
-									if (tdms.getCourseScheduleType() == CourseScheduleType.CLASSROOM) {
-										mins = 40;
-									} else if (tdms.getCourseScheduleType() == CourseScheduleType.HIGH) {
-										mins = 45;
+								if(tdms.getCourseScheduleType() == CourseScheduleType.HIGH_ONLINE) {
+									if (!classGroupStudentNumMap.containsKey(ts.getClassGroupId())) {
+										// 查询 班级人数
+										String[] strs = classGroupStudentMapperDao.findStudentNumByClassGroupId(ts.getClassGroupId());
+										classGroupStudentNumMap.put(ts.getClassGroupId(), strs.length);
+									}
+									String salaryRuleJson = tdms.getSalaryRuleJson();
+									if (StringUtils.isNotBlank(salaryRuleJson)) {
+										JSONObject obj = JSON.parseObject(salaryRuleJson);
+										ts.setExpectSalary(new BigDecimal(obj.getDouble(classGroupStudentNumMap.get(ts.getClassGroupId()) + "")));
+										list.add(ts);
 									}
+									
+								} else if (musicGroup.getSettlementType() == SalarySettlementTypeEnum.GRADIENT_SALARY) {// 3.0课酬
+									mins = 90;
 									// 判断是助教、主教
 									if (ts.getTeacherRole() == TeachTypeEnum.BISHOP) {
-										ts.setExpectSalary(duration.divide(new BigDecimal(mins), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getMainTeacher90MinSalary()));
+										if (tdms.getCourseScheduleType() == CourseScheduleType.CLASSROOM || tdms.getCourseScheduleType() == CourseScheduleType.HIGH) {
+											ts.setExpectSalary(tdms.getMainTeacher90MinSalary());
+										}else{
+											ts.setExpectSalary(duration.divide(new BigDecimal(mins), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getMainTeacher90MinSalary()));
+										}
 									} else {
-										ts.setExpectSalary(duration.divide(new BigDecimal(mins), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getAssistantTeacher90MinSalary()));
+										if (tdms.getCourseScheduleType() == CourseScheduleType.CLASSROOM || tdms.getCourseScheduleType() == CourseScheduleType.HIGH) {
+											ts.setExpectSalary(tdms.getAssistantTeacher90MinSalary());
+										}else{
+											ts.setExpectSalary(duration.divide(new BigDecimal(mins), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getAssistantTeacher90MinSalary()));
+										}
 									}
 									list.add(ts);
 								} else if (musicGroup.getSettlementType() == SalarySettlementTypeEnum.TEACHER_DEFAULT) {// 默认课酬
 									mins = 30;
-									if (tdms.getCourseScheduleType() == CourseScheduleType.CLASSROOM) {
-										mins = 40;
-									} else if (tdms.getCourseScheduleType() == CourseScheduleType.HIGH) {
-										mins = 45;
-									}
 									BigDecimal minsDecimal = new BigDecimal(mins);
 									// 判断是助教、主教
 									if (ts.getTeacherRole() == TeachTypeEnum.BISHOP) {
-										ts.setExpectSalary(duration.divide(minsDecimal, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getMainTeacher30MinSalary()));
+										if (tdms.getCourseScheduleType() == CourseScheduleType.CLASSROOM || tdms.getCourseScheduleType() == CourseScheduleType.HIGH) {
+											ts.setExpectSalary(tdms.getMainTeacher30MinSalary());
+										}else{
+											ts.setExpectSalary(duration.divide(minsDecimal, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getMainTeacher30MinSalary()));
+										}
 									} else {
-										ts.setExpectSalary(duration.divide(minsDecimal, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getAssistantTeacher30MinSalary()));
+										if (tdms.getCourseScheduleType() == CourseScheduleType.CLASSROOM || tdms.getCourseScheduleType() == CourseScheduleType.HIGH) {
+											ts.setExpectSalary(tdms.getAssistantTeacher30MinSalary());
+										}else{
+											ts.setExpectSalary(duration.divide(minsDecimal, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getAssistantTeacher30MinSalary()));
+										}
 									}
 									list.add(ts);
 								}

+ 8 - 4
mec-biz/src/main/resources/config/mybatis/TeacherDefaultMusicGroupSalaryMapper.xml

@@ -11,6 +11,7 @@
 		<result column="assistant_teacher_90min_salary_" property="assistantTeacher90MinSalary" />
 		<result column="main_teacher_30min_salary_" property="mainTeacher30MinSalary" />
 		<result column="assistant_teacher_30min_salary_" property="assistantTeacher30MinSalary" />
+		<result column="salary_rule_json_" property="salaryRuleJson" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 	</resultMap>
@@ -32,19 +33,19 @@
 		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO teacher_default_music_group_salary
 		(user_id_,course_schedule_type_,main_teacher_90min_salary_,assistant_teacher_90min_salary_,main_teacher_30min_salary_,
-		assistant_teacher_30min_salary_,create_time_,update_time_)
+		assistant_teacher_30min_salary_,salary_rule_json_,create_time_,update_time_)
 		VALUES(#{userId},#{courseScheduleType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 		#{mainTeacher90MinSalary},#{assistantTeacher90MinSalary},
-		#{mainTeacher30MinSalary},#{assistantTeacher30MinSalary},now(),now())
+		#{mainTeacher30MinSalary},#{assistantTeacher30MinSalary},#{salaryRuleJson},now(),now())
 	</insert>
 	<insert id="batchAdd" parameterType="list">
 		INSERT INTO teacher_default_music_group_salary
 		(user_id_,course_schedule_type_,main_teacher_90min_salary_,assistant_teacher_90min_salary_,main_teacher_30min_salary_,
-		assistant_teacher_30min_salary_,create_time_,update_time_)
+		assistant_teacher_30min_salary_,salary_rule_json_,create_time_,update_time_)
 		VALUES
 		<foreach collection="salaries" item="item" separator=",">
 			(#{item.userId},#{item.courseScheduleType.code},#{item.mainTeacher90MinSalary},
-			#{item.assistantTeacher90MinSalary},#{item.mainTeacher30MinSalary},#{item.assistantTeacher30MinSalary},now(),now())
+			#{item.assistantTeacher90MinSalary},#{item.mainTeacher30MinSalary},#{item.assistantTeacher30MinSalary},#{item.salaryRuleJson},now(),now())
 		</foreach>
 	</insert>
 
@@ -74,6 +75,9 @@
 			<if test="assistantTeacher30MinSalary != null">
 				assistant_teacher_30min_salary_ = #{assistantTeacher30MinSalary},
 			</if>
+			<if test="salaryRuleJson != null">
+				salary_rule_json_ = #{salaryRuleJson},
+			</if>
 		</set>
 		WHERE id_ = #{id}
 	</update>

+ 15 - 11
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java

@@ -1,25 +1,29 @@
 package com.ym.mec.teacher.controller;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+
+import java.util.Objects;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.GetMapping;
+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.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
 import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.GroupNoticeQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.ClassGroupStudentMapperService;
 import com.ym.mec.biz.service.CourseScheduleEvaluateService;
 import com.ym.mec.biz.service.ImGroupNoticeService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
-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.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.Objects;
 
 /**
  * @Author Joburgess
@@ -47,7 +51,7 @@ public class ClassGroupController extends BaseController {
 
     @ApiOperation(value = "获取教师班级详情界面头部信息")
     @GetMapping("/findTeacherClassGroupInfo")
-    public Object findTeacherClassGroupInfo(@ApiParam(value = "班级编号", required = true)Long classGroupId){
+    public Object findTeacherClassGroupInfo(@ApiParam(value = "班级编号", required = true)Integer classGroupId){
         return succeed(classGroupService.findTeacherClassGroupInfo(classGroupId));
     }