Selaa lähdekoodia

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

yonge 5 vuotta sitten
vanhempi
commit
e495947da3

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

@@ -44,6 +44,15 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	int countVipGroupSalarys(Map<String, Object> params);
 
 	/**
+	 * @describe 统计课程对应学生实际缴费金额
+	 * @author Joburgess
+	 * @date 2019/12/2
+	 * @param courseScheduleIds:
+	 * @return java.util.List<java.util.Map<java.lang.Integer,java.math.BigDecimal>>
+	 */
+	List<Map<Integer,BigDecimal>> countActualAmount(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+	/**
 	 * @return java.util.List<com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary>
 	 * @Author: Joburgess
 	 * @Date: 2019/10/15

+ 18 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -168,6 +168,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
         int days = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.VIP_APPEAL_DAYS_RANGE).getParanValue());
 
+        BigDecimal percent = new BigDecimal(10);
+
         //获取教师未结算课程记录
         List<CourseScheduleTeacherSalary> someDayAgoTeacherCourseSalaryNoSettlement = courseScheduleTeacherSalaryDao.findSomeDayAgoTeacherCourseSalaryNoSettlement(days);
         if (CollectionUtils.isEmpty(someDayAgoTeacherCourseSalaryNoSettlement)) {
@@ -227,7 +229,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 }
                 //计算教师责任总占比
                 double teacherLiabilityRatioSum = courseStudentComplaints.stream().mapToDouble(courseScheduleComplaint -> Objects.isNull(courseScheduleComplaint.getTeacherLiabilityRatio()) ? 0 : courseScheduleComplaint.getTeacherLiabilityRatio()).sum();
-                teacherLiabilityAllratio = new BigDecimal(teacherLiabilityRatioSum);
+                teacherLiabilityAllratio = new BigDecimal(teacherLiabilityRatioSum).divide(percent,CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN);
             } else {
                 //如果没有投诉,则教师和学生的责任占比为0
                 teacherLiabilityAllratio = new BigDecimal(0);
@@ -256,7 +258,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             teacherCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.WAGE);
             teacherCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
             teacherCashAccountDetail.setAmount(actualSalary);
-            teacherCashAccountDetail.setBalance(teacherCashAccount.getBalance());
+            if(Objects.isNull(teacherCashAccount)){
+                teacherCashAccountDetail.setBalance(new BigDecimal(0));
+            }else{
+                teacherCashAccountDetail.setBalance(teacherCashAccount.getBalance());
+            }
             teacherCashAccountDetail.setAttribute(courseScheduleTeacherSalary.getCourseScheduleId().toString());
 
             userCashAccountDetails.add(teacherCashAccountDetail);
@@ -285,7 +291,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     if (Objects.isNull(temp)) {
                         temp = 0.0;
                     }
-                    studentLiabilityRatio = new BigDecimal(temp);
+                    studentLiabilityRatio = new BigDecimal(temp).divide(percent,CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN);
                 } else {
                     studentLiabilityRatio = new BigDecimal(0);
                 }
@@ -293,7 +299,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 //当前课程学生应退费用
                 BigDecimal returnPrice = studentExpectPrice.multiply(studentLiabilityRatio);
                 //当前课程学生实际缴费
-                BigDecimal actualPrice = expectSalary.subtract(returnPrice);
+                BigDecimal actualPrice = studentExpectPrice.subtract(returnPrice);
                 //更新学生结算信息
                 studentPayment.setActualPrice(actualPrice);
                 studentPayment.setSettlementTime(now);
@@ -444,7 +450,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     } else {
                         classTimeDuty = classTimeDuty.divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                     }
-                    BigDecimal teacherDefaultSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
+                    BigDecimal teacherDefaultSalary = new BigDecimal(0);
+                    if(Objects.nonNull(teacherDefaultMusicGroupSalaryWithTeacherId)){
+                        teacherDefaultSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
+                    }
                     teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
                 } else if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY.getCode())) {
                     //课程时长与结算单位时长占比
@@ -456,7 +465,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     } else {
                         classTimeDuty = classTimeDuty.divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                     }
-                    BigDecimal teacherDefaultSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher90MinSalary();
+                    BigDecimal teacherDefaultSalary = new BigDecimal(0);
+                    if(Objects.nonNull(teacherDefaultMusicGroupSalaryWithTeacherId)){
+                        teacherDefaultSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher90MinSalary();
+                    }
                     teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
                 }
             }else{

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -1289,6 +1289,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			pageInfo.setTotal(count);
 			params.put("offset", pageInfo.getOffset());
 			dataList = courseScheduleTeacherSalaryDao.findVipGroupSalarys(params);
+			List<Long> courseScheduleIds = dataList.stream().map(VipGroupSalaryDto::getCourseScheduleId).collect(Collectors.toList());
+			List<Map<Integer, BigDecimal>> courseAmountMapList = courseScheduleTeacherSalaryDao.countActualAmount(courseScheduleIds);
+			Map<Integer, BigDecimal> courseAmountMap = MapUtil.convertIntegerMap(courseAmountMapList);
 			if(!CollectionUtils.isEmpty(dataList)){
 				dataList.forEach(vipGroupSalaryDto -> {
 					if(Objects.isNull(vipGroupSalaryDto.getExpectSalary())){
@@ -1302,6 +1305,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 						vipGroupSalaryDto.setDeductionFee(vipGroupSalaryDto.getExpectSalary().subtract(vipGroupSalaryDto.getActualSalary()));
 						vipGroupSalaryDto.setIsSalary(YesOrNoEnum.YES);
 					}
+					BigDecimal actualAmount = courseAmountMap.get(vipGroupSalaryDto.getCourseScheduleId().intValue());
+					if(Objects.nonNull(actualAmount)){
+						vipGroupSalaryDto.setDeductionFee(actualAmount);
+					}
 				});
 			}
 		}

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

@@ -234,7 +234,10 @@
             </foreach>
     </select>
     <select id="countUserGroups" resultType="int">
-      SELECT COUNT(1) FROM class_group_student_mapper WHERE user_id_=#{userId} AND group_type_=#{groupType} AND status_!='QUIT'
+      SELECT COUNT(1)
+      FROM class_group_student_mapper cgsm
+      LEFT JOIN class_group cg ON cgsm.class_group_id_=cg.id_
+      WHERE cgsm.user_id_=#{userId} AND cgsm.group_type_=#{groupType} AND cgsm.status_!='QUIT' AND cg.del_flag_!=1
     </select>
     
     <select id="queryClassGroupIdList" resultType="int" parameterType="map">

+ 14 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -212,7 +212,7 @@
 		course_schedule_teacher_salary csts
 		LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
 		WHERE
-		CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt;= DATE_ADD( NOW( ), INTERVAL - #{days} DAY )
+		cs.class_date_ &lt;= DATE_FORMAT(DATE_ADD( NOW( ), INTERVAL - 1 DAY ),'%Y-%m-%d')
 		AND cs.type_='VIP'
 		AND csts.settlement_time_ IS NULL
     </select>
@@ -333,4 +333,17 @@
 	<select id="findCourseScheduleTeacherSalaryByMusicGroupId" resultMap="CourseScheduleTeacherSalary">
 		SELECT * FROM course_schedule_teacher_salary WHERE music_group_id_=#{musicGroupId} AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 	</select>
+	<select id="countActualAmount" resultType="java.util.Map">
+		SELECT
+			course_schedule_id_ AS 'key',
+			SUM( actual_price_ ) AS 'value'
+		FROM
+			course_schedule_student_payment
+		WHERE course_schedule_id_ IN
+			<foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+				#{courseScheduleId}
+			</foreach>
+		GROUP BY
+			course_schedule_id_
+	</select>
 </mapper>

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

@@ -154,6 +154,9 @@
             <if test="wxOpenid != null">
                 wx_openid_ = #{wxOpenid},
             </if>
+            <if test="password != null">
+                password_ = #{password},
+            </if>
             <if test="avatar != null">
                 avatar_ = #{avatar},
             </if>

+ 10 - 9
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -749,19 +749,20 @@
 
     <select id="countStudentPaymentNum" resultType="int">
         SELECT
-            COUNT(*)
-        FROM
-            course_schedule cs
-            LEFT JOIN course_schedule_student_payment cssp ON cs.id_=cssp.user_id_
-            WHERE cssp.settlement_time_ IS NOT NULL AND cs.class_group_id_=#{classGroupId}
+            *
+        FROM course_schedule_student_payment cssp
+        WHERE
+            cssp.settlement_time_ IS NOT NULL
+            AND cssp.class_group_id_ = #{classGroupId}
     </select>
     <select id="countStudentPaymentFee" resultType="java.math.BigDecimal">
         SELECT
-            SUM(actual_price_)
+            SUM( actual_price_ )
         FROM
-            course_schedule cs
-            LEFT JOIN course_schedule_student_payment cssp ON cs.id_=cssp.user_id_
-            WHERE cssp.settlement_time_ IS NOT NULL AND cs.class_group_id_=#{classGroupId}
+            course_schedule_student_payment cssp
+        WHERE
+            cssp.settlement_time_ IS NOT NULL
+            AND cssp.class_group_id_ = #{classGroupId}
     </select>
     
     <select id="queryByIds" resultMap="VipGroup" parameterType="string">