瀏覽代碼

上课列表

chengpeng 5 年之前
父節點
當前提交
eb833cdc80

+ 52 - 0
mec-education/src/main/java/com/ym/mec/education/controller/AttendClassController.java

@@ -0,0 +1,52 @@
+package com.ym.mec.education.controller;
+
+import com.ym.mec.education.base.BaseResponse;
+import com.ym.mec.education.base.PageResponse;
+import com.ym.mec.education.req.AttendClassReq;
+import com.ym.mec.education.service.IStudentAttendanceService;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author : chengp
+ * @version V1.0
+ * @Description: TODO
+ * @date Date : 2019年10月07日 10:08
+ */
+@RestController
+@RequestMapping("api/attendClass")
+@Api(tags = "上课记录")
+@Slf4j
+public class AttendClassController {
+
+    @Autowired
+    private IStudentAttendanceService studentAttendanceService;
+    /**
+     * 服务降级处理
+     *
+     * @return
+     */
+    private BaseResponse defaultFallback() {
+        BaseResponse response = new BaseResponse();
+        response.setReturnCode(500);
+        response.setMessage("太拥挤了, 请稍后再试!");
+        return response;
+    }
+
+
+    /**
+     *
+     * @param req
+     * @return
+     */
+    @PostMapping(value = "/attendRecord")
+    public PageResponse attendRecord(@RequestBody AttendClassReq req) {
+
+        return  studentAttendanceService.attendRecordList(req);
+    }
+}

+ 10 - 0
mec-education/src/main/java/com/ym/mec/education/entity/StudentAttendance.java

@@ -58,6 +58,16 @@ public class StudentAttendance extends Model<StudentAttendance> {
     @TableField("remark_")
     private String remark;
 
+    @TableField("current_class_times_")
+    private Integer currentClassTimes;
+
+    public Integer getCurrentClassTimes() {
+        return currentClassTimes;
+    }
+
+    public void setCurrentClassTimes(Integer currentClassTimes) {
+        this.currentClassTimes = currentClassTimes;
+    }
 
     public Long getId() {
         return id;

+ 10 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/StudentAttendanceMapper.java

@@ -1,7 +1,11 @@
 package com.ym.mec.education.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.education.entity.StudentAttendance;
+import com.ym.mec.education.req.AttendClassReq;
+import com.ym.mec.education.resp.AttendClassResp;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +17,10 @@ import com.ym.mec.education.entity.StudentAttendance;
  */
 public interface StudentAttendanceMapper extends BaseMapper<StudentAttendance> {
 
+    /**
+     *学生上课记录
+     * @param page
+     * @return
+     */
+    Page<AttendClassResp> selectPageByCondition(Page page, @Param("query") AttendClassReq req);
 }

+ 51 - 0
mec-education/src/main/java/com/ym/mec/education/req/AttendClassReq.java

@@ -0,0 +1,51 @@
+package com.ym.mec.education.req;
+
+/**
+ * @version V1.0
+ * @Description: TODO
+ * @date Date : 2019年10月07日 9:43
+ */
+
+import com.ym.mec.education.base.BaseQuery;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+/**
+ * |上课记录
+ */
+@Data
+@ToString
+public class AttendClassReq extends BaseQuery implements Serializable {
+    @ApiModelProperty(value = "月份", required = false)
+    private String months;
+    @ApiModelProperty(value = "类型1.已上课,2 未上课", required = true)
+    private String type;
+    /**
+     * 	NORMAL("NORMAL", "普通班级"),
+     * 	MIX("MIX", "合奏班级"),
+     * 	HIGH("HIGH", "提高班"),
+     * 	VIP("VIP", "vip课"),
+     * 	DEMO("demo", "试听课");
+     */
+    @ApiModelProperty(value = "课程类型", required = false)
+    private String classType;
+
+    /**
+     * 到课状态
+     */
+    @ApiModelProperty(value = "到课情况", required = false)
+    /**
+     *     NOT_START("NOT_START","未开始"),
+     *     UNDERWAY("UNDERWAY","进行中"),
+     *     OVER("OVER","已结束");
+     */
+    private String status;
+
+    /**
+     * 学生id
+     */
+    private Integer userId;
+}

+ 59 - 0
mec-education/src/main/java/com/ym/mec/education/resp/AttendClassResp.java

@@ -0,0 +1,59 @@
+package com.ym.mec.education.resp;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author : chengp
+ * @version V1.0
+ * @Description: TODO
+ * @date Date : 2019年10月07日 9:43
+ */
+
+@Data
+@ToString
+@ApiModel(description = "上课记录出参")
+public class AttendClassResp implements Serializable {
+
+    @ApiModelProperty(value = "剩余课程数")
+    private Integer subClassNum;
+    @ApiModelProperty(value = "上课状态")
+    private String status;
+    @ApiModelProperty(value = "日期")
+    private String dateStr;
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+    @ApiModelProperty(value = "线上,线下")
+    private String teachMode;
+    @ApiModelProperty(value = "课程名")
+    private String className;
+    @ApiModelProperty(value = "星期")
+    private String week;
+
+    private Integer musicGroupId;
+    private Integer classGroupId;
+    private Integer userId;
+    private Integer teacherId;
+    private String type;//vip 普通课
+    private String name;//乐团名
+    private String coureName;//课程名
+    @ApiModelProperty(value = "老师名")
+    private String realName;
+
+
+    private Date startClassTime;
+    private Date endClassTime;
+    private Date classDate;//课表日期
+
+    private Integer totalClassTimes;
+
+    private Integer currentclassTimes;
+}

+ 7 - 0
mec-education/src/main/java/com/ym/mec/education/service/IStudentAttendanceService.java

@@ -3,6 +3,7 @@ package com.ym.mec.education.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.education.base.PageResponse;
 import com.ym.mec.education.entity.StudentAttendance;
+import com.ym.mec.education.req.AttendClassReq;
 import com.ym.mec.education.req.ClassGroupReq;
 import com.ym.mec.education.req.CourseScheduleReq;
 
@@ -33,4 +34,10 @@ public interface IStudentAttendanceService extends IService<StudentAttendance> {
      */
     PageResponse statisticsList(ClassGroupReq classGroupReq);
 
+    /**
+     * 学员上课记录
+     * @param req
+     * @return
+     */
+    PageResponse attendRecordList(AttendClassReq req);
 }

+ 27 - 0
mec-education/src/main/java/com/ym/mec/education/service/impl/StudentAttendanceServiceImpl.java

@@ -9,8 +9,10 @@ import com.ym.mec.education.base.PageResponse;
 import com.ym.mec.education.entity.*;
 import com.ym.mec.education.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.education.mapper.StudentAttendanceMapper;
+import com.ym.mec.education.req.AttendClassReq;
 import com.ym.mec.education.req.ClassGroupReq;
 import com.ym.mec.education.req.CourseScheduleReq;
+import com.ym.mec.education.resp.AttendClassResp;
 import com.ym.mec.education.resp.StudentAttendanceResp;
 import com.ym.mec.education.resp.StudentAttendanceStatisticsResp;
 import com.ym.mec.education.service.*;
@@ -216,4 +218,29 @@ public class StudentAttendanceServiceImpl extends ServiceImpl<StudentAttendanceM
         }
         return PageResponse.success(pageResult);
     }
+
+    @Override
+    public PageResponse attendRecordList(AttendClassReq req) {
+
+        PageResponse<AttendClassResp> response = new PageResponse();
+        Page<StudentAttendance> pageParam = new Page(req.getPageNo(), req.getPageSize());
+
+        Page<AttendClassResp>  attendClassRespPage = this.baseMapper.selectPageByCondition(pageParam,req);
+
+        List<AttendClassResp> respList = attendClassRespPage.getRecords();
+        if(!CollectionUtils.isEmpty(respList)){
+
+            respList.forEach(e->{
+
+                e.setDateStr(DateUtil.date2String(e.getClassDate(),DateUtil.DATE_FORMAT));
+                e.setStartTime(DateUtil.date2String(e.getStartClassTime(),DateUtil.TIME_FORMAT));
+                e.setEndTime(DateUtil.date2String(e.getEndClassTime(),DateUtil.TIME_FORMAT));
+                e.setWeek(DateUtil.date2Week(e.getClassDate()));
+            });
+
+
+        }
+        return PageResponse.success(pageParam);
+    }
+
 }

+ 34 - 9
mec-education/src/main/resources/mapper/StudentAttendanceMapper.xml

@@ -4,20 +4,45 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.ym.mec.education.entity.StudentAttendance">
-        <id column="id_" property="id" />
-        <result column="music_group_id_" property="musicGroupId" />
-        <result column="class_group_id_" property="classGroupId" />
-        <result column="course_schedule_id_" property="courseScheduleId" />
-        <result column="user_id_" property="userId" />
-        <result column="teacher_id_" property="teacherId" />
-        <result column="status_" property="status" />
-        <result column="create_time_" property="createTime" />
-        <result column="remark_" property="remark" />
+        <id column="id_" property="id"/>
+        <result column="music_group_id_" property="musicGroupId"/>
+        <result column="class_group_id_" property="classGroupId"/>
+        <result column="course_schedule_id_" property="courseScheduleId"/>
+        <result column="user_id_" property="userId"/>
+        <result column="teacher_id_" property="teacherId"/>
+        <result column="status_" property="status"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="remark_" property="remark"/>
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
         id_, music_group_id_, class_group_id_, course_schedule_id_, user_id_, teacher_id_, status_, create_time_, remark_
     </sql>
+    <select id="selectPageByCondition" parameterType="com.ym.mec.education.req.AttendClassReq"
+            resultType="com.ym.mec.education.resp.AttendClassResp">
 
+     SELECT
+	s.music_group_id_,s.class_group_id_,s.user_id_,s.teacher_id_,s.current_class_times_,s.status_,g.name_,g.total_class_times_,g.type_,g.teach_mode_,u.real_name_,c.name_ as coureName,c.class_date_,c.start_class_time_,c.end_class_time_
+    FROM
+	student_attendance s
+    LEFT JOIN course_schedule c
+    ON s.course_schedule_id_ = c.id_
+    LEFT JOIN class_group g on g.id_ = s.class_group_id_
+    LEFT JOIN sys_user u on u.id_ = c.teacher_id_
+    LEFT JOIN class_group_student_mapper m ON m.class_group_id_ = g.id_
+        WHERE
+     m.user_id_ = #{query.userId}
+       <if test="query.months != null">
+          and DATE_FORMAT(s.create_time_, '%Y-%m') = #{query.months}
+        </if>
+        <if test="query.status != null">
+            AND c.status_ = #{query.status}
+        </if>
+
+        <if test="query.classType != null">
+            and g.type_ = #{query.classType}
+        </if>
+
+    </select>
 </mapper>