Browse Source

1、vip课程总额;
2、学生退课费用计算;
3、vip课点名签到签退操作;

Joburgess 5 years ago
parent
commit
bfa15eb341

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -125,5 +125,24 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
      */
     List<StudentPaymentOrder> findOrdersOverTime(@Param("orderNoList") List<String> orderNoList, @Param("status") DealStatusEnum status, @Param("beforeTime") Date beforeTime);
 
+    /**
+     * @describe 根据乐团和用户编号统计剩余课时
+     * @author Joburgess
+     * @date 2019/12/4
+     * @param musicGroupId: 乐团编号
+     * @param userId: 用户编号
+     * @return int
+     */
+    int countSurplusCourseByMusicGroupAndUser(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId);
 
+    /**
+     * @describe 统计乐团或vip课的收入金额
+     * @author Joburgess
+     * @date 2019/12/4
+     * @param musicGroupId: 乐团或小课金额
+     * @param groupType:
+     * @return java.math.BigDecimal
+     */
+    BigDecimal sumGroupIncomeFee(@Param("musicGroupId") String musicGroupId,
+                                 @Param("groupType") String groupType);
 }

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

@@ -19,7 +19,7 @@ public interface StudentAttendanceService extends BaseService<Long, StudentAtten
 	 * @Date: 2019/9/11
 	 * 批量插入学生上课签到信息
 	 */
-	Map addStudentAttendances(StudentAttendanceDto studentAttendanceInfo);
+	void addStudentAttendances(StudentAttendanceDto studentAttendanceInfo);
 
 	/**
 	 * @describe 获取当前课程的学生

+ 62 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -8,10 +8,7 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
-import com.ym.mec.biz.service.StudentAttendanceService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysMessageService;
-import com.ym.mec.biz.service.TeacherAttendanceService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
@@ -58,6 +55,14 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 	private SysConfigDao sysConfigDao;
 	@Autowired
 	private TeacherAttendanceService teacherAttendanceService;
+	@Autowired
+	private SchoolDao schoolDao;
+	@Autowired
+	private SysConfigService sysConfigService;
+	@Autowired
+	private CourseScheduleService courseScheduleService;
+	@Autowired
+	private TeacherAttendanceDao teacherAttendanceDao;
 
 	@Override
 	public BaseDAO<Long, StudentAttendance> getDAO() {
@@ -66,7 +71,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public Map addStudentAttendances(StudentAttendanceDto studentAttendanceInfos) {
+	public void addStudentAttendances(StudentAttendanceDto studentAttendanceInfos) {
 		List<StudentAttendance> studentAttendances=studentAttendanceInfos.getStudentAttendances();
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if(Objects.isNull(sysUser)){
@@ -135,13 +140,58 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 		courseSchedule.setLeaveStudentNum(leaveStudentNum);
 		courseScheduleDao.update(courseSchedule);
 
-		TeacherSignOutDto teacherSignOutDto=new TeacherSignOutDto();
-		TeacherAttendance teacherAttendance = new TeacherAttendance(courseSchedule.getId(), 0);
-		teacherAttendance.setSignInLongitudeLatitude(studentAttendanceInfos.getSignInLongitudeLatitude());
-		teacherAttendance.setUpdate(studentAttendanceInfos.getUpdate());
-		teacherSignOutDto.setTeacherAttendanceInfo(teacherAttendance);
-		teacherSignOutDto.setNotRturnErrorInfo(true);
-		return teacherAttendanceService.addTeacherAttendanceRecord(teacherSignOutDto);
+		if(StringUtils.isBlank(studentAttendanceInfos.getSignInLongitudeLatitude())){
+			throw new BizException("未获取到您的位置");
+		}
+
+		School school = schoolDao.get(courseSchedule.getSchoolId());
+
+		//是否在范围内
+		boolean isInScore = true;
+		if(StringUtils.isBlank(school.getLongitudeLatitude())){
+			if(studentAttendanceInfos.getUpdate().equals(YesOrNoEnum.YES.getCode())){
+				school.setLongitudeLatitude(studentAttendanceInfos.getSignInLongitudeLatitude());
+				schoolDao.update(school);
+			}
+		}else{
+			SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
+			double attendanceRange = Double.valueOf(sysConfig.getParanValue());
+			double distance = MapUtil.distance(studentAttendanceInfos.getSignInLongitudeLatitude(),
+					school.getLongitudeLatitude());
+			if(distance>attendanceRange){
+				isInScore=false;
+			}
+		}
+
+		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(sysUser.getId().longValue(),courseSchedule.getId());
+
+
+		Date date = new Date();
+		if(Objects.isNull(teacherAttendance)){
+			teacherAttendance= new TeacherAttendance();
+			teacherAttendance.setTeacherId(sysUser.getId());
+			teacherAttendance.setCreateTime(date);
+		}else if(teacherAttendance.getSignInTime() != null && teacherAttendance.getSignOutTime() != null){
+			return;
+		}
+
+		YesOrNoEnum yesOrNoEnum = courseScheduleService.enableOnlyNormalAttendance(courseSchedule.getStartClassTime(),
+				sysUser.getId().longValue(),
+				true,
+				courseSchedule.getSchoolId().intValue());
+		teacherAttendance.setSignInTime(date);
+		teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
+		teacherAttendance.setSignOutTime(date);
+		teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
+		if(yesOrNoEnum != YesOrNoEnum.YES&&courseSchedule.getStartClassTime().before(date)){
+			teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
+			teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
+		}
+		if(Objects.nonNull(teacherAttendance.getId())){
+			teacherAttendanceDao.update(teacherAttendance);
+		}else{
+			teacherAttendanceDao.insert(teacherAttendance);
+		}
 	}
 
 	@Override

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

@@ -1113,13 +1113,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		}
 		VipGroup vipGroup=vipGroupDao.get(vipGroupId);
 		//剩余课时数
-		Map surplusClassTimes=MapUtil.convertMybatisMap(vipGroupDao.countSurplusClassTimes(vipGroupId));
-		studentApplyRefunds.setExpectAmount(countVipGroupPredictFee(vipGroup,
-				vipGroup.getUserId(),
-				new BigDecimal(Objects.isNull(surplusClassTimes.get(TeachModeEnum.ONLINE.getCode()))?"0":surplusClassTimes.get(TeachModeEnum.ONLINE.getCode()).toString()),
-				new BigDecimal(Objects.isNull(surplusClassTimes.get(TeachModeEnum.OFFLINE.getCode()))?"0":surplusClassTimes.get(TeachModeEnum.OFFLINE.getCode()).toString()),
-				true,
-				false).get("totalPrice"));
+		int surplusCourses = studentPaymentOrderDao.countSurplusCourseByMusicGroupAndUser(vipGroup.getId().toString(), userId);
+		if(surplusCourses<=0){
+			throw new BizException("此vip课程没有剩余排课");
+		}
+		BigDecimal surplusCourseFee = studentPaymentOrderDao.sumSurplusCourseFee(vipGroup.getId().toString(), userId);
+		studentApplyRefunds.setExpectAmount(surplusCourseFee);
 		studentApplyRefunds.setStatus(StudentApplyRefundsStatus.ING);
 		String orderNo=StringUtils.join(new String[]{userId.toString(),String.valueOf(System.currentTimeMillis())});
 		studentApplyRefunds.setOrderNo(orderNo);
@@ -1367,10 +1366,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			vipGroupSalaryBaseInfo.setTotalFeeDeduction(new BigDecimal(0));
 		}
 
-		BigDecimal totalCoursePrice= courseScheduleStudentPaymentDao.countAllCourseFee(classGroup.getId());
+		BigDecimal totalCoursePrice= studentPaymentOrderDao.sumGroupIncomeFee(classGroup.getId().toString(),GroupType.VIP.getCode());
 		if(Objects.isNull(totalCoursePrice)){
 			totalCoursePrice=new BigDecimal(0);
 		}
+
 		//课程总价
 		vipGroupSalaryBaseInfo.setTotalCoursePrice(totalCoursePrice);
 

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

@@ -149,7 +149,7 @@
 		WHERE
 			(cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
 			AND cssp.user_id_ = #{userId}
-			AND cs.status_ = 'NOT_START'
+			AND CONCAT(cs.class_date_	,' ',cs.start_class_time_) &gt; NOW()
 			AND cs.class_group_id_ = #{classGroupId}
     </select>
 	<select id="countAllCourseFee" resultType="java.math.BigDecimal">

+ 22 - 1
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -224,7 +224,7 @@
         WHERE
             cssp.user_id_ = #{userId}
             AND cssp.music_group_id_ = #{vipGroupId}
-            AND cs.status_='NOT_START'
+            AND CONCAT(cs.class_date_	,' ',cs.start_class_time_) &gt; NOW()
     </select>
     <select id="findNotFailedOrderByStudentVipGroup" resultMap="StudentPaymentOrder">
         SELECT
@@ -295,4 +295,25 @@
         select count(1) from student_payment_order where  music_group_id_=#{musicGroupId} AND status_ = 'SUCCESS' AND type_='SMALL_CLASS_TO_BUY'
     </select>
 
+    <select id="countSurplusCourseByMusicGroupAndUser" resultType="int">
+        SELECT
+            COUNT(*)
+        FROM
+            course_schedule_student_payment cssp
+            LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
+        WHERE
+            cssp.user_id_ = #{userId}
+            AND cssp.music_group_id_ = #{musicGroupId}
+            AND CONCAT(cs.class_date_	,' ',cs.start_class_time_) &gt; NOW()
+    </select>
+    <select id="sumGroupIncomeFee" resultType="java.math.BigDecimal">
+        SELECT
+            SUM(expect_amount_)
+        FROM
+            student_payment_order
+        WHERE
+            group_type_ = #{groupType}
+            AND music_group_id_ = #{musicGroupId}
+    </select>
+
 </mapper>

+ 2 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherAttendanceController.java

@@ -47,6 +47,7 @@ public class TeacherAttendanceController extends BaseController {
     @ApiOperation(value = "点名")
     @PostMapping("/addStudentAttendances")
     public Object addStudentAttendances(@RequestBody StudentAttendanceDto studentAttendanceInfo){
-        return succeed(studentAttendanceService.addStudentAttendances(studentAttendanceInfo));
+        studentAttendanceService.addStudentAttendances(studentAttendanceInfo);
+        return succeed();
     }
 }

+ 1 - 1
mec-web/src/main/resources/application.yml

@@ -31,7 +31,7 @@ spring:
   datasource:
     name: test
     url: jdbc:mysql://47.99.212.176:3306/mec_dev?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
-#    url: jdbc:mysql://47.99.212.176:3306/mec_data_online?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
+#    url: jdbc:mysql://47.99.212.176:3306/mec_data_online?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
 #    username: dayaData
 #    password: dayaDataOnline2019
     username: mec_dev