Forráskód Böngészése

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

zouxuan 5 éve
szülő
commit
a978062d45

+ 9 - 7
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java

@@ -1,17 +1,15 @@
 package com.ym.mec.biz.dal.dao;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import com.ym.mec.biz.dal.entity.StudentAttendance;
-import org.apache.ibatis.annotations.Param;
-
 import com.ym.mec.biz.dal.dto.Mapper;
 import com.ym.mec.biz.dal.dto.TeacherAbnormalAttendanceInfoDto;
 import com.ym.mec.biz.dal.dto.TeacherPersonalAttendanceDto;
 import com.ym.mec.biz.dal.entity.TeacherAttendance;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
 
@@ -22,6 +20,10 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
      */
     List<TeacherPersonalAttendanceDto> getTeacherPersonalAttendances(Map<String,Object> params);
 
+    int batchInsert(@Param("teacherAttendances") List<TeacherAttendance> teacherAttendances);
+
+    int batchDeleteByCourseSchedules(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
     /**
      * 教师个人签到记录统计
      * @param params

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherAttendance.java

@@ -46,6 +46,9 @@ public class TeacherAttendance {
 
 	@ApiModelProperty(value = "签退时间")
 	private Date signOutTime;
+
+	@ApiModelProperty(value = "当前课次")
+	private Integer currentClassTimes;
 	
 	/** 备注 */
 	@ApiModelProperty(value = "备注",required = false)
@@ -65,6 +68,19 @@ public class TeacherAttendance {
 		this.createTime = createTime;
 	}
 
+	public TeacherAttendance(Integer teacherId, Long courseScheduleId) {
+		this.teacherId = teacherId;
+		this.courseScheduleId = courseScheduleId;
+	}
+
+	public Integer getCurrentClassTimes() {
+		return currentClassTimes;
+	}
+
+	public void setCurrentClassTimes(Integer currentClassTimes) {
+		this.currentClassTimes = currentClassTimes;
+	}
+
 	public YesOrNoEnum getSignInStatus() {
 		return signInStatus;
 	}

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java

@@ -26,6 +26,15 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
                                              BigDecimal offlineTeacherSalary);
 
     /**
+     * @describe 批量插入教师课程课酬记录
+     * @author Joburgess
+     * @date 2019/11/7
+     * @param courseScheduleTeacherSalaries:
+     * @return void
+     */
+    void batchInsert(List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries);
+
+    /**
      * @Author: Joburgess
      * @Date: 2019/10/15
      * @params []

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

@@ -85,6 +85,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
     @Autowired
+    private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
+    @Autowired
     private StudentRegistrationService studentRegistrationService;
     @Autowired
     private ImFeignService imFeignService;
@@ -1014,7 +1016,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             now = now.plusDays(1);
         }
         //老师结算表
-        courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
+        courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
 
         //加入合奏班
         ClassGroupRelation classGroupRelation = new ClassGroupRelation();
@@ -1227,7 +1229,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
         }
         //老师结算表
-        courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
+        courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
 
         //加入合奏班
         ClassGroupRelation classGroupRelation = new ClassGroupRelation();
@@ -1438,7 +1440,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         classGroupRelationService.insert(classGroupRelation);
 
         //老师结算表
-        courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
+        courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
 
         //学生结算表
         courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPaymentList);

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

@@ -37,6 +37,8 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
     @Autowired
     private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
     @Autowired
+    private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
+    @Autowired
     private TeacherDefaultMusicGroupSalaryDao teacherDefaultMusicGroupSalaryDao;
     @Autowired
     private SysConfigDao sysConfigDao;
@@ -158,7 +160,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
             }
         }
-        courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
+        courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
         return true;
     }
 
@@ -241,7 +243,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                         teacherDefaultMusicGroupSalaryWithTeacherId));
             });
         });
-        courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
+        courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
     }
 
     /**

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

@@ -64,6 +64,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	@Autowired
 	private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
 	@Autowired
+	private TeacherAttendanceDao teacherAttendanceDao;
+	@Autowired
 	private ClassGroupService classGroupService;
 	@Autowired
 	private ClassGroupDao classGroupDao;
@@ -108,6 +110,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		courseScheduleDao.batchDeleteCourseSchedules(courseScheduleIds);
 		courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
 		courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseScheduleIds);
+		teacherAttendanceDao.batchDeleteByCourseSchedules(courseScheduleIds);
 	}
 
 	@Override

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

@@ -45,6 +45,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     private SysUserCashAccountDetailDao sysUserCashAccountDetailDao;
     @Autowired
     private SysConfigService sysConfigDao;
+    @Autowired
+    private TeacherAttendanceDao teacherAttendanceDao;
 
     private static final Logger LOGGER = LoggerFactory
             .getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
@@ -114,12 +116,23 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             }
         }
         if(courseScheduleTeacherSalaries.size()>0){
-            courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
+            batchInsert(courseScheduleTeacherSalaries);
         }
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
+    public void batchInsert(List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries) {
+        courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
+        List<TeacherAttendance> teacherAttendances=new ArrayList<>();
+        courseScheduleTeacherSalaries.forEach(courseScheduleTeacherSalary -> {
+            teacherAttendances.add(new TeacherAttendance(courseScheduleTeacherSalary.getUserId(),courseScheduleTeacherSalary.getCourseScheduleId()));
+        });
+        teacherAttendanceDao.batchInsert(teacherAttendances);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
     public void teacherSalarySettlement() {
 
         int days = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.VIP_SETTLEMENT_CYCLE).getParanValue());

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java

@@ -12,6 +12,7 @@ import com.ym.mec.biz.dal.enums.TeachTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.StudentDemoGroupQueryInfo;
 import com.ym.mec.biz.dal.page.TeacherManageDemoGroupQueryInfo;
+import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.DemoGroupService;
 import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.common.dal.BaseDAO;
@@ -46,6 +47,8 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 	@Autowired
 	private CourseScheduleDao courseScheduleDao;
 	@Autowired
+	private CourseScheduleService courseScheduleService;
+	@Autowired
 	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
 
 	@Autowired
@@ -219,6 +222,9 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 		className.append("-");
 		className.append(CourseSchedule.CourseScheduleType.DEMO.getMsg());
 		courseScheduleByDemoGroup.setName(className.toString());
+		List<CourseSchedule> courseSchedules=new ArrayList<>();
+		courseSchedules.add(courseScheduleByDemoGroup);
+		courseScheduleService.checkNewCourseSchedules(courseSchedules);
 		courseScheduleDao.insert(courseScheduleByDemoGroup);
 
 		CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();

+ 11 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -174,13 +174,13 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 
 		if(Objects.isNull(teacherAttendance)){
 			teacherAttendance=new TeacherAttendance();
-			teacherAttendance.setTeacherId(userId);
-			teacherAttendance.setClassGroupId(classGroup.getId());
-			teacherAttendance.setMusicGroupId(classGroup.getMusicGroupId());
 			teacherAttendance.setCourseScheduleId(courseScheduleId.longValue());
 		}else{
 			isAttendance=true;
 		}
+		teacherAttendance.setTeacherId(userId);
+		teacherAttendance.setClassGroupId(classGroup.getId());
+		teacherAttendance.setMusicGroupId(classGroup.getMusicGroupId());
 
 		int timeGap = DateUtil.minutesBetween(now, courseSchedule.getStartClassTime());
 
@@ -192,24 +192,23 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 
 		switch (signStatus){
 			case SIGN_IN:
-				teacherAttendance.setSignInTime(now);
-				if(yesOrNoEnum.equals(YesOrNoEnum.YES)||advanceSignInMinutes<=timeGap&&timeGap<=60){
-					teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
-				}else{
-					teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
+				if (courseSchedule.getEndClassTime().after(now)){
+					teacherAttendance.setSignInTime(now);
+					if(yesOrNoEnum.equals(YesOrNoEnum.YES)||advanceSignInMinutes<=timeGap&&timeGap<=60){
+						teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
+					}else{
+						teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
+					}
 				}
 				int currentClassTimes = teacherAttendanceDao.countClassTime(classGroup.getId().longValue());
 				classGroup.setCurrentClassTimes(currentClassTimes);
-				if(updateCourseScheduleStatus){
+				if(updateCourseScheduleStatus&&courseSchedule.getStatus().equals(CourseStatusEnum.NOT_START)){
 					courseScheduleDao.updateCourscheduleStatus(courseScheduleId,CourseStatusEnum.UNDERWAY.getCode());
 				}
 				break;
 			case SIGN_OUT:
 				teacherAttendance.setSignOutTime(now);
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
-				if(updateCourseScheduleStatus){
-					courseScheduleDao.updateCourscheduleStatus(courseScheduleId,CourseStatusEnum.OVER.getCode());
-				}
 				break;
 			default:
 

+ 27 - 21
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -96,6 +96,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	private VipGroupDefaultClassesCycleDao vipGroupDefaultClassesCycleDao;
 	@Autowired
 	private TeacherDao teacherDao;
+	@Autowired
+	private TeacherAttendanceDao teacherAttendanceDao;
 
 	@Override
 	public BaseDAO<Long, VipGroup> getDAO() {
@@ -221,20 +223,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		vipGroupClassGroupMapper.setClassGroupId(classGroup.getId());
 		vipGroupClassGroupMapperDao.insert(vipGroupClassGroupMapper);
 
-		//不需要审核
-		if(vipGroupApplyBaseInfoDto.getAuditStatus() == AuditStatusEnum.PASS){
-			//创建融云班级群
-			ImGroupMember[] imGroupMembers = { new ImGroupMember(vipGroup.getVipGroupApplyBaseInfo().getUserId().toString())};
-			// 创建群组
-			imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
-
-			//发送推送短信
-			Map<Integer,String> map = new HashMap<>(1);
-			map.put(sysUser.getId(),sysUser.getPhone());
-			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI,MessageTypeEnum.TEACHER_SMS_VIP_COURSE_ADD,
-					map,null,0,"",vipGroupApplyBaseInfoDto.getName());
-		}
-
 		//创建班级老师关联记录
 		ClassGroupTeacherMapper classGroupTeacherMapper=new ClassGroupTeacherMapper();
 		classGroupTeacherMapper.setMusicGroupId(vipGroupApplyBaseInfoDto.getId().toString());
@@ -271,7 +259,20 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				vipGroup.getCourseSchedules(),
 				vipGroupApplyBaseInfoDto.getOnlineTeacherSalary(),
 				vipGroupApplyBaseInfoDto.getOfflineTeacherSalary());
-		//
+
+		//不需要审核
+		if(vipGroupApplyBaseInfoDto.getAuditStatus() == AuditStatusEnum.PASS){
+			//创建融云班级群
+			ImGroupMember[] imGroupMembers = { new ImGroupMember(vipGroup.getVipGroupApplyBaseInfo().getUserId().toString())};
+			// 创建群组
+			imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+
+			//发送推送短信
+			Map<Integer,String> map = new HashMap<>(1);
+			map.put(sysUser.getId(),sysUser.getPhone());
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI,MessageTypeEnum.TEACHER_SMS_VIP_COURSE_ADD,
+					map,null,0,"",vipGroupApplyBaseInfoDto.getName());
+		}
 	}
 
 	@Override
@@ -634,15 +635,17 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
 				case TEACHER_DEFAULT:
 					if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!useDefaultTeacherSalary
-							&&vipGroupActivity.getSalaryReadonlyFlag().equals("1")){
+							&&vipGroupActivity.getSalaryReadonlyFlag().equals("0")){
 						teacherOnlineSalary=((VipGroupApplyBaseInfoDto) vipGroup).getOnlineTeacherSalary();
 					}
 
 					if(Objects.isNull(teacherOnlineSalary)){
 						if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOnlineClassesSalary())){
-							throw new BizException("请设置教师课酬");
+//							throw new BizException("请设置教师课酬");
+							teacherOnlineSalary=new BigDecimal(0);
+						}else{
+							teacherOnlineSalary=teacherDefaultVipGroupSalary.getOnlineClassesSalary();
 						}
-						teacherOnlineSalary=teacherDefaultVipGroupSalary.getOnlineClassesSalary();
 						teacherOnlineSalary=teacherOnlineSalary.multiply(classTimeDuty);
 					}
 					results.put("onlineTeacherSalary",teacherOnlineSalary);
@@ -663,14 +666,16 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
 				case TEACHER_DEFAULT:
 					if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!useDefaultTeacherSalary
-							&&vipGroupActivity.getSalaryReadonlyFlag().equals("1")){
+							&&vipGroupActivity.getSalaryReadonlyFlag().equals("0")){
 						teacherOfflineSalary=((VipGroupApplyBaseInfoDto) vipGroup).getOfflineTeacherSalary();
 					}
 					if(Objects.isNull(teacherOfflineSalary)||Objects.isNull(Objects.isNull(teacherDefaultVipGroupSalary))){
 						if(Objects.isNull(teacherDefaultVipGroupSalary)){
-							throw new BizException("请设置教师课酬");
+//							throw new BizException("请设置教师课酬");
+							teacherOfflineSalary=new BigDecimal(0);
+						}else{
+							teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
 						}
-						teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
 						teacherOfflineSalary=teacherOfflineSalary.multiply(classTimeDuty);
 					}
 					results.put("offlineTeacherSalary",teacherOfflineSalary);
@@ -1113,6 +1118,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		courseScheduleDao.batchDeleteCourseSchedules(courseScheduleIds);
 		courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
 		courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseScheduleIds);
+		teacherAttendanceDao.batchDeleteByCourseSchedules(courseScheduleIds);
 		//vip课停止通知
 		Teacher teacher = teacherDao.get(vipGroup.getUserId());
 		Map<Integer,String> map = new HashMap<>(1);

+ 20 - 0
mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml

@@ -48,6 +48,16 @@
         VALUES(#{id},#{teacherId},#{musicGroupId},#{classGroupId},#{courseScheduleId},#{signInTime},#{signInStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{remark},now(),#{signOutTime},#{signOutStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
     </insert>
 
+    <insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.TeacherAttendance" useGeneratedKeys="true"
+            keyColumn="id" keyProperty="id">
+        INSERT INTO teacher_attendance
+        (teacher_id_,music_group_id_,class_group_id_,course_schedule_id_,sign_in_time_,sign_in_status_,remark_,create_time_,sign_out_time_,sign_out_status_)
+        VALUE
+        <foreach collection="teacherAttendances" item="teacherAttendance" separator=",">
+            (#{teacherAttendance.teacherId},#{teacherAttendance.musicGroupId},#{teacherAttendance.classGroupId},#{teacherAttendance.courseScheduleId},#{teacherAttendance.signInTime},#{teacherAttendance.signInStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{teacherAttendance.remark},now(),#{teacherAttendance.signOutTime},#{teacherAttendance.signOutStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+        </foreach>
+    </insert>
+
     <!-- 根据主键查询一条记录 -->
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.TeacherAttendance">
         UPDATE teacher_attendance
@@ -79,6 +89,9 @@
             <if test="signOutStatus != null">
                 sign_out_status_ = #{signOutStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
+            <if test="currentClassTimes != null">
+                current_class_times_ = #{currentClassTimes},
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>
@@ -88,6 +101,13 @@
 		DELETE FROM teacher_attendance WHERE id_ = #{id} 
 	</delete>
 
+    <delete id="batchDeleteByCourseSchedules">
+        DELETE FROM teacher_attendance WHERE id_ IN
+        <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+            #{courseScheduleId}
+        </foreach>
+    </delete>
+
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="TeacherAttendance" parameterType="map">
         SELECT * FROM teacher_attendance ORDER BY id_