소스 검색

功能调整

Joburgess 5 년 전
부모
커밋
5fd24bf071

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupStudentFeeDao.java

@@ -13,4 +13,14 @@ public interface MusicGroupStudentFeeDao extends BaseDAO<Long, MusicGroupStudent
      * @return
      */
     MusicGroupStudentFee findByUser(@Param("userId") Integer userId,@Param("musicGroupId") String musicGroupId);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/29
+     * 根据学生编号和乐团编号更新旷课次数
+     * @param operate 0重置,1加1
+     */
+    int updateStudentAbsenteeismTimes(@Param("userId") Integer userId,
+                                      @Param("musicGroupId") Integer musicGroupId,
+                                      @Param("operate")Integer operate);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java

@@ -36,6 +36,13 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
 
     /**
      * @Author: Joburgess
+     * @Date: 2019/9/29
+     * 获取对应学生最后一次的签到记录
+     */
+    StudentAttendance getStudentLatestAttendanceInfo(StudentAttendance studentAttendance);
+
+    /**
+     * @Author: Joburgess
      * @Date: 2019/9/16
      * 获取学生个人上课签到记录
      */

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVipGroupShowListDto.java

@@ -30,7 +30,7 @@ public class StudentVipGroupShowListDto {
     private Integer offlineClassesNum;
 
     @ApiModelProperty(value = "学生购买价格",required = false)
-    private BigDecimal price;
+    private BigDecimal unitPrice;
 
     @ApiModelProperty(value = "预计招生人数",hidden = true)
     private Integer expectStudentNum;
@@ -111,12 +111,12 @@ public class StudentVipGroupShowListDto {
         this.offlineClassesNum = offlineClassesNum;
     }
 
-    public BigDecimal getPrice() {
-        return price;
+    public BigDecimal getUnitPrice() {
+        return unitPrice;
     }
 
-    public void setPrice(BigDecimal price) {
-        this.price = price;
+    public void setUnitPrice(BigDecimal unitPrice) {
+        this.unitPrice = unitPrice;
     }
 
     public Integer getExpectStudentNum() {

+ 8 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentDemoGroupQueryInfo.java

@@ -3,6 +3,8 @@ package com.ym.mec.biz.dal.page;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.util.Date;
+
 /**
  * @Author Joburgess
  * @Date 2019/9/25
@@ -13,10 +15,10 @@ public class StudentDemoGroupQueryInfo extends QueryInfo {
     private String subjectIds;
 
     @ApiModelProperty(value = "开始时间",required = false)
-    private String startTime;
+    private Date startTime;
 
     @ApiModelProperty(value = "结束时间",required = false)
-    private String endTime;
+    private Date endTime;
 
     public String getSubjectIds() {
         return subjectIds;
@@ -26,19 +28,19 @@ public class StudentDemoGroupQueryInfo extends QueryInfo {
         this.subjectIds = subjectIds;
     }
 
-    public String getStartTime() {
+    public Date getStartTime() {
         return startTime;
     }
 
-    public void setStartTime(String startTime) {
+    public void setStartTime(Date startTime) {
         this.startTime = startTime;
     }
 
-    public String getEndTime() {
+    public Date getEndTime() {
         return endTime;
     }
 
-    public void setEndTime(String endTime) {
+    public void setEndTime(Date endTime) {
         this.endTime = endTime;
     }
 }

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

@@ -1,10 +1,12 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
 import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
 import com.ym.mec.biz.dal.dto.StudentPersonalAttendanceDto;
 import com.ym.mec.biz.dal.dto.StudentStatusCountUtilEntity;
 import com.ym.mec.biz.dal.entity.StudentAttendance;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.common.dal.BaseDAO;
@@ -12,7 +14,6 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -26,6 +27,8 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 	
 	@Autowired
 	private StudentAttendanceDao studentAttendanceDao;
+	@Autowired
+	private MusicGroupStudentFeeDao studentFeeDao;
 
 	@Override
 	public BaseDAO<Long, StudentAttendance> getDAO() {
@@ -35,8 +38,28 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 	@Override
 	public void addStudentAttendances(List<StudentAttendance> studentAttendances) {
 		studentAttendances.forEach(studentAttendance -> {
+			StudentAttendance studentAttendanceInfo = studentAttendanceDao.getStudentAttendanceInfo(studentAttendance);
 			if (studentAttendance.getStatus() != StudentAttendanceStatusEnum.DROP_OUT) {
-				studentAttendanceDao.insert(studentAttendanceDao.getStudentAttendanceInfo(studentAttendance));
+				//判断是否为连续旷课
+				if(StudentAttendanceStatusEnum.TRUANT.equals(studentAttendance.getStatus())
+						||StudentAttendanceStatusEnum.LEAVE.equals(studentAttendance.getStatus())){
+					StudentAttendance studentLatestAttendanceInfo = studentAttendanceDao.getStudentLatestAttendanceInfo(studentAttendanceInfo);
+					if(StudentAttendanceStatusEnum.TRUANT.equals(studentLatestAttendanceInfo.getStatus())
+							||StudentAttendanceStatusEnum.LEAVE.equals(studentLatestAttendanceInfo.getStatus())){
+						studentFeeDao.updateStudentAbsenteeismTimes(studentAttendanceInfo.getUserId(),
+								studentAttendanceInfo.getMusicGroupId(),
+								YesOrNoEnum.YES.getCode());
+					}
+				}else{
+					studentFeeDao.updateStudentAbsenteeismTimes(studentAttendanceInfo.getUserId(),
+							studentAttendanceInfo.getMusicGroupId(),
+							YesOrNoEnum.NO.getCode());
+				}
+				studentAttendanceDao.insert(studentAttendanceInfo);
+			}else{
+				studentFeeDao.updateStudentAbsenteeismTimes(studentAttendanceInfo.getUserId(),
+						studentAttendanceInfo.getMusicGroupId(),
+						YesOrNoEnum.NO.getCode());
 			}
 		});
 	}

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

@@ -378,7 +378,8 @@
         SELECT
         cs.class_date_
         FROM
-        course_schedule cs ON cgsm.class_group_id_ = cs.class_group_id_
+        class_group_student_mapper cgsm
+        LEFT JOIN course_schedule cs ON cgsm.class_group_id_ = cs.class_group_id_
         WHERE
         cs.teacher_id_ = #{teacherId}
         <if test="month==null">

+ 5 - 2
mec-biz/src/main/resources/config/mybatis/DemoGroupMapper.xml

@@ -140,8 +140,11 @@ create_time_ = #{createTime},
 			<if test="subjectIds!=null and subjectIds!=''">
 				AND FIND_IN_SET(dg.subject_id_,#{subjectIds})
 			</if>
-			<if test="startTimes!=null and startTimes!=''">
-				AND FIND_IN_SET(dgcp.courses_start_time_,#{startTimes})
+			<if test="startTime!=null and endTime==null">
+				AND dgcp.courses_start_time_=#{startTime}
+			</if>
+			<if test="startTime!=null and endTime!=null">
+				AND dgcp.courses_start_time_&gt;=#{startTime} AND dgcp.courses_start_time_ &lt;= #{endTime}
 			</if>
 		</where>
 	</sql>

+ 10 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupStudentFeeMapper.xml

@@ -63,6 +63,16 @@
         </set>
         WHERE id_ = #{id}
     </update>
+    <update id="updateStudentAbsenteeismTimes">
+        update music_group_student_fee_
+        <if test="operate==0">
+            set continuous_absenteeism_times_=0
+        </if>
+        <if test="operate==1">
+            set continuous_absenteeism_times_=continuous_absenteeism_times_+1
+        </if>
+        WHERE music_group_id_ = #{musicGroupId} AND user_id_ = #{userId}
+    </update>
 
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">

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

@@ -151,8 +151,22 @@
             LEFT JOIN class_group cg ON cg.id_ = cgsm.class_group_id_
             LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
             LEFT JOIN `subject` s ON cg.subject_id_ = s.id_
+            LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
         WHERE
-            su.id_=#{userId}
+            su.id_=#{userId} AND cs.id_=#{courseScheduleId}
+    </select>
+
+    <select id="getStudentLatestAttendanceInfo" resultType="com.ym.mec.biz.dal.entity.StudentAttendance" resultMap="StudentAttendance">
+        SELECT
+            *
+        FROM
+            student_attendance sa
+        WHERE
+            sa.music_group_id_ = #{musicGroupId}
+            AND sa.user_id_ = #{userId}
+        ORDER BY
+            sa.create_time_ DESC
+            LIMIT 1
     </select>
 
     <resultMap id="studentPersonalAttendance" type="com.ym.mec.biz.dal.dto.StudentPersonalAttendanceDto">

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

@@ -1,4 +1,4 @@
-package com.ym.mec.web.controller.teacher;
+package com.ym.mec.teacher.controller;
 
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/teacher/TeacherCourseHomeworkReplyController.java → mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseHomeworkReplyController.java

@@ -1,4 +1,4 @@
-package com.ym.mec.web.controller.teacher;
+package com.ym.mec.teacher.controller;
 
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;

+ 17 - 4
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -1,15 +1,14 @@
 package com.ym.mec.teacher.controller;
 
+import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.common.controller.BaseController;
 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.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
 
@@ -24,6 +23,8 @@ public class TeacherCourseScheduleController extends BaseController {
 
     @Autowired
     private CourseScheduleService scheduleService;
+    @Autowired
+    private StudentAttendanceService studentAttendanceService;
 
     @ApiOperation(value = "根据月份获取乐团在该月有课的日期")
     @GetMapping("/getCourseScheduleDateByMonth")
@@ -37,4 +38,16 @@ public class TeacherCourseScheduleController extends BaseController {
         return succeed(scheduleService.getTeacherCourseSchedulesWithDate(date));
     }
 
+    @ApiOperation(value = "根据课程ID查询正在或即将开始的课程")
+    @GetMapping("/getCurrentCourseDetail/{courseID}")
+    public Object getCurrentCourseDetail(@ApiParam(value = "课程ID", required = true) @PathVariable("courseID") Long courseID){
+        return succeed(scheduleService.getCurrentCourseDetail(courseID));
+    }
+
+    @ApiOperation(value = "根据班级ID获取当前课程的学生")
+    @GetMapping("/getCurrentCourseStudents")
+    public Object getCurrentCourseStudents(@RequestBody StudentAttendanceQueryInfo queryInfo){
+        return succeed(studentAttendanceService.getCurrentCourseStudents(queryInfo));
+    }
+
 }

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/teacher/TeacherVipGroupController.java → mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherVipGroupController.java

@@ -1,4 +1,4 @@
-package com.ym.mec.web.controller.teacher;
+package com.ym.mec.teacher.controller;
 
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;

+ 24 - 25
mec-web/src/test/java/com/ym/webApplicationTest.java

@@ -1,40 +1,31 @@
 package com.ym;
 
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import com.ym.mec.biz.dal.dao.VipGroupDao;
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.StudentAttendance;
+import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
+import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.common.security.SecurityUtils;
+import com.ym.mec.web.WebApplication;
 import junit.framework.TestCase;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
+import org.springframework.http.*;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
 
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
-import com.ym.mec.biz.dal.dto.CourseScheduleDto;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.StudentAttendance;
-import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
-import com.ym.mec.biz.service.CourseScheduleService;
-import com.ym.mec.common.security.SecurityUtils;
-import com.ym.mec.web.WebApplication;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * Unit test for simple App.
@@ -62,6 +53,8 @@ public class webApplicationTest
 
     @Autowired
     private VipGroupDao vipGroupDao;
+    @Autowired
+    private MusicGroupStudentFeeDao studentFeeDao;
 
     @Test
     public void test(){
@@ -148,4 +141,10 @@ public class webApplicationTest
         System.out.println(vipGroupDetail.getAvatar());
     }
 
+    @Test
+    public void test7(){
+        int i = studentFeeDao.updateStudentAbsenteeismTimes(1, 1, 0);
+        System.out.println(i);
+    }
+
 }