Browse Source

活动排课课酬规则变更

zouxuan 1 year ago
parent
commit
eb294d9148

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

@@ -129,4 +129,6 @@ public interface ActivityUserMapperDao extends BaseDAO<Integer, ActivityUserMapp
     int countSumPage(Map<String, Object> params);
 
     List<ActivityUserMapperSumDto> querySumPage(Map<String, Object> params);
+
+    List<ActivityUserMapperSettlementDto> querySettlementByIds(@Param("activityUserMapperIds") List<Integer> activityUserMapperIds);
 }

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

@@ -0,0 +1,10 @@
+package com.ym.mec.biz.dal.dto;
+
+import lombok.Data;
+
+@Data
+public class ActivityUserMapperSettlementDto {
+    private Integer activityId;
+
+    private String salarySettlementJson;
+}

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

@@ -1,7 +1,10 @@
 package com.ym.mec.biz.dal.dto;
 
+import lombok.Data;
+
 import java.util.List;
 
+@Data
 public class CheckScheduleQualificationDto {
     private List<Integer> studentIdList;
 
@@ -20,45 +23,4 @@ public class CheckScheduleQualificationDto {
         this.courseNum = courseNum;
         this.groupId = groupId;
     }
-
-    public List<Integer> getStudentIdList() {
-        return studentIdList;
-    }
-
-    public void setStudentIdList(List<Integer> studentIdList) {
-        this.studentIdList = studentIdList;
-    }
-
-    public Integer getCategoryId() {
-        return categoryId;
-    }
-
-    public void setCategoryId(Integer categoryId) {
-        this.categoryId = categoryId;
-    }
-
-    public Integer getClassMinutes() {
-        return classMinutes;
-    }
-
-    public void setClassMinutes(Integer classMinutes) {
-        this.classMinutes = classMinutes;
-    }
-
-    public Integer getCourseNum() {
-        return courseNum;
-    }
-
-    public void setCourseNum(Integer courseNum) {
-        this.courseNum = courseNum;
-    }
-
-    public Long getGroupId() {
-        return groupId;
-    }
-
-    public void setGroupId(Long groupId) {
-        this.groupId = groupId;
-    }
-
 }

+ 2 - 38
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupSalarySettlementDto.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.io.Serializable;
 
@@ -8,17 +9,12 @@ import java.io.Serializable;
  * @Author Joburgess
  * @Date 2019/10/1
  */
+@Data
 public class VipGroupSalarySettlementDto implements Serializable {
 
-//    @ApiModelProperty("收费VIP线上课收费标准")
-//    private VipGroupSalarySettlementTypeDto vipOnlineSalarySettlement;
-
     @ApiModelProperty("收费VIP线下课收费标准")
     private VipGroupSalarySettlementTypeDto offlineSalarySettlement;
 
-//    @ApiModelProperty("赠送VIP线上课收费标准")
-//    private VipGroupSalarySettlementTypeDto giveVipOnlineSalarySettlement;
-
     @ApiModelProperty("赠送VIP线下课收费标准")
     private VipGroupSalarySettlementTypeDto giveVipOfflineSalarySettlement;
 
@@ -27,36 +23,4 @@ public class VipGroupSalarySettlementDto implements Serializable {
 
     @ApiModelProperty("赠送网管课收费标准")
     private VipGroupSalarySettlementTypeDto givePracticeSalarySettlement;
-
-    public VipGroupSalarySettlementTypeDto getOfflineSalarySettlement() {
-        return offlineSalarySettlement;
-    }
-
-    public void setOfflineSalarySettlement(VipGroupSalarySettlementTypeDto offlineSalarySettlement) {
-        this.offlineSalarySettlement = offlineSalarySettlement;
-    }
-
-    public VipGroupSalarySettlementTypeDto getGiveVipOfflineSalarySettlement() {
-        return giveVipOfflineSalarySettlement;
-    }
-
-    public void setGiveVipOfflineSalarySettlement(VipGroupSalarySettlementTypeDto giveVipOfflineSalarySettlement) {
-        this.giveVipOfflineSalarySettlement = giveVipOfflineSalarySettlement;
-    }
-
-    public VipGroupSalarySettlementTypeDto getPracticeSalarySettlement() {
-        return practiceSalarySettlement;
-    }
-
-    public void setPracticeSalarySettlement(VipGroupSalarySettlementTypeDto practiceSalarySettlement) {
-        this.practiceSalarySettlement = practiceSalarySettlement;
-    }
-
-    public VipGroupSalarySettlementTypeDto getGivePracticeSalarySettlement() {
-        return givePracticeSalarySettlement;
-    }
-
-    public void setGivePracticeSalarySettlement(VipGroupSalarySettlementTypeDto givePracticeSalarySettlement) {
-        this.givePracticeSalarySettlement = givePracticeSalarySettlement;
-    }
 }

+ 2 - 24
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupSalarySettlementTypeDto.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dto;
 import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
 import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.math.BigDecimal;
 
@@ -10,6 +11,7 @@ import java.math.BigDecimal;
  * @Author Joburgess
  * @Date 2019/10/1
  */
+@Data
 public class VipGroupSalarySettlementTypeDto {
 
     @ApiModelProperty(value = "课程形式")
@@ -20,28 +22,4 @@ public class VipGroupSalarySettlementTypeDto {
 
     @ApiModelProperty(value = "课酬结算参数值")
     private BigDecimal settlementValue;
-
-    public TeachModeEnum getTeachMode() {
-        return teachMode;
-    }
-
-    public void setTeachMode(TeachModeEnum teachMode) {
-        this.teachMode = teachMode;
-    }
-
-    public SalarySettlementTypeEnum getSalarySettlementType() {
-        return salarySettlementType;
-    }
-
-    public void setSalarySettlementType(SalarySettlementTypeEnum salarySettlementType) {
-        this.salarySettlementType = salarySettlementType;
-    }
-
-    public BigDecimal getSettlementValue() {
-        return settlementValue;
-    }
-
-    public void setSettlementValue(BigDecimal settlementValue) {
-        this.settlementValue = settlementValue;
-    }
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleStudentPayment.java

@@ -32,6 +32,9 @@ public class CourseScheduleStudentPayment extends BaseEntity implements Comparab
 	/**  */
 	private Integer userId;
 
+	//关联的是否是赠送的课程
+	private Boolean giveFlag = false;
+
 	private BigDecimal originalPrice = BigDecimal.ZERO;
 	
 	/** 预计价格 */

+ 53 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java

@@ -521,7 +521,8 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		vipGroupDao.insert(applyBaseInfo);
 
 		//校验排课资格,消耗排课资格(获取被使用的排课资格)
-		CheckScheduleQualificationDto dto = new CheckScheduleQualificationDto(studentIdList, vipGroupCategory.getId(), applyBaseInfo.getSingleClassMinutes(), courseNum, applyBaseInfo.getId());
+		CheckScheduleQualificationDto dto = new CheckScheduleQualificationDto(studentIdList, vipGroupCategory.getId(),
+				applyBaseInfo.getSingleClassMinutes(), courseNum, applyBaseInfo.getId());
 		List<CourseScheduleStudentPayment> courseScheduleStudentPayments = this.checkScheduleQualification(dto);
 
 		List<VipGroupStudentCoursePrice> vscps = vipGroup.getVipGroupApplyBaseInfo().getVipGroupStudentCoursePrices();
@@ -614,6 +615,16 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 
 		//创建老师单节课课酬信息
 		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
+		//如果是1V1的课程,需要处理老师课酬
+		Map<Integer, String> settlementMap = new HashMap<>();
+		if (vipGroupCategory.getStudentNum() == 1){
+			List<Integer> activityUserMapperIds = courseScheduleStudentPayments.stream().map(e -> e.getActivityUserMapperId()).collect(Collectors.toList());
+			if(CollectionUtils.isNotEmpty(activityUserMapperIds)){
+				List<ActivityUserMapperSettlementDto> activityUserMapperSettlementDtos = activityUserMapperDao.querySettlementByIds(activityUserMapperIds);
+				settlementMap = activityUserMapperSettlementDtos.stream().collect(Collectors.groupingBy(e -> e.getActivityId(),
+						Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0).getSalarySettlementJson())));
+			}
+		}
 		//课程信息调整
 		for (CourseSchedule courseSchedule : courseSchedules) {
 			courseSchedule.setGroupType(GroupType.VIP);
@@ -641,9 +652,6 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 			courseScheduleTeacherSalary.setActualSalary(null);
 			courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
 		}
-		if (courseScheduleTeacherSalaries.size() > 0) {
-			courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaries);
-		}
 
 		applyBaseInfo.setCourseSchedulesJson(JSON.toJSONString(vipGroup.getCourseSchedules()));
 		vipGroupDao.update(applyBaseInfo);
@@ -672,6 +680,32 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 				userRoleMap.put(courseScheduleStudentPayment.getUserId(), null);
 			}
 		}
+		//处理老师课酬
+		if (courseScheduleTeacherSalaries.size() > 0) {
+			if(settlementMap.size() > 0){
+				Map<Long,CourseScheduleStudentPayment> courseActivityUserMap = courseScheduleStudentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseScheduleId,
+						Collectors.collectingAndThen(Collectors.toList(),value->value.get(0))));
+				for (CourseScheduleTeacherSalary teacherSalary : courseScheduleTeacherSalaries) {
+					String s = settlementMap.get(courseActivityUserMap.get(teacherSalary.getCourseScheduleId()));
+					if (StringUtils.isEmpty(s)) {
+						continue;
+					}
+					VipGroupSalarySettlementDto settlementDto = JSON.parseObject(s, VipGroupSalarySettlementDto.class);
+					CourseScheduleStudentPayment studentPayment = courseActivityUserMap.get(teacherSalary.getCourseScheduleId());
+					//判断是否使用的赠送的排课资格
+					VipGroupSalarySettlementTypeDto vipOfflineSalarySettlement;
+					if(studentPayment.getGiveFlag()){
+						vipOfflineSalarySettlement = settlementDto.getGiveVipOfflineSalarySettlement();
+					}else {
+						vipOfflineSalarySettlement = settlementDto.getOfflineSalarySettlement();
+					}
+					if(Objects.nonNull(vipOfflineSalarySettlement) && vipOfflineSalarySettlement.getSalarySettlementType() == SalarySettlementTypeEnum.FIXED_SALARY){
+						teacherSalary.setExpectSalary(vipOfflineSalarySettlement.getSettlementValue());
+					}
+				}
+			}
+			courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaries);
+		}
 
 		if (courseScheduleStudentPayments.size() > 0) {
 			List<CourseScheduleStudentPayment> payments = courseScheduleStudentPayments.stream().filter(e -> e.getCalenderId() != null).collect(Collectors.toList());
@@ -755,6 +789,19 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 			courseScheduleStudentPayments.add(courseScheduleStudentPayment);
 		}
 	}
+	private void getFreeStudentPayment(Integer userId,
+								   Integer courseNum,
+								   List<CourseScheduleStudentPayment> courseScheduleStudentPayments,
+								   ActivityUserMapper activityUserMapper){
+		for (Integer i = 0; i < courseNum; i++) {
+			CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+			courseScheduleStudentPayment.setUserId(userId);
+			courseScheduleStudentPayment.setActivityUserMapperId(activityUserMapper.getId());
+			courseScheduleStudentPayment.setCalenderId(activityUserMapper.getCalenderId());
+			courseScheduleStudentPayment.setGiveFlag(true);
+			courseScheduleStudentPayments.add(courseScheduleStudentPayment);
+		}
+	}
 
 	@Override
 	public List<CourseScheduleStudentPayment> use(CheckScheduleQualificationDto dto) {
@@ -824,10 +871,10 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 					if(num <= subCourseNum){
 						activityUserMapper.setSubGiveCourseNum(0);
 						subCourseNum = subCourseNum - num;
-						this.getStudentPayment(integer,num,BigDecimal.ZERO,courseScheduleStudentPayments,activityUserMapper);
+						this.getFreeStudentPayment(integer,num,courseScheduleStudentPayments,activityUserMapper);
 					}else {
 						activityUserMapper.setSubGiveCourseNum(num - subCourseNum);
-						this.getStudentPayment(integer,subCourseNum,BigDecimal.ZERO,courseScheduleStudentPayments,activityUserMapper);
+						this.getFreeStudentPayment(integer,subCourseNum,courseScheduleStudentPayments,activityUserMapper);
 						continue one;
 					}
 				}

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

@@ -714,4 +714,12 @@
 		group by aum.user_id_
 		<include refid="global.limit"/>
 	</select>
+    <select id="querySettlementByIds" resultType="com.ym.mec.biz.dal.dto.ActivityUserMapperSettlementDto">
+		select aum.id_ activityId,vga.salary_settlement_json_ salarySettlementJson from activity_user_mapper aum
+		left join vip_group_activity vga ON vga.id_ = aum.activity_id_
+		where vga.id_ = aum.activity_id_ and aum.id_ IN
+		<foreach collection="activityUserMapperIds" item="activityUserMapperId" open="(" separator="," close=")">
+			#{activityUserMapperId}
+		</foreach>
+	</select>
 </mapper>