浏览代码

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

yonge 5 年之前
父节点
当前提交
0547c7bfc5
共有 27 个文件被更改,包括 537 次插入205 次删除
  1. 11 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDetailDao.java
  2. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysConfigDao.java
  3. 0 11
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleDto.java
  4. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicCardDto.java
  5. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterPayDto.java
  6. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderDetailTypeEnum.java
  7. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  8. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderDetailService.java
  9. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  10. 16 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  11. 15 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java
  12. 95 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  13. 3 7
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  14. 2 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  15. 9 0
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderDetailMapper.xml
  16. 3 0
      mec-biz/src/main/resources/config/mybatis/SysConfigMapper.xml
  17. 55 55
      mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml
  18. 12 3
      mec-education/src/main/java/com/ym/mec/education/controller/TeacherController.java
  19. 1 1
      mec-education/src/main/java/com/ym/mec/education/enums/SignStatusEnum.java
  20. 4 0
      mec-education/src/main/java/com/ym/mec/education/req/TeacherReq.java
  21. 34 0
      mec-education/src/main/java/com/ym/mec/education/resp/TeacherDailyScheduleResp.java
  22. 2 0
      mec-education/src/main/java/com/ym/mec/education/service/ITeacherService.java
  23. 3 2
      mec-education/src/main/java/com/ym/mec/education/service/impl/StudentAttendanceServiceImpl.java
  24. 148 69
      mec-education/src/main/java/com/ym/mec/education/service/impl/TeacherServiceImpl.java
  25. 45 32
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  26. 2 3
      mec-student/src/main/java/com/ym/mec/student/controller/StudentVipGroupController.java
  27. 17 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDetailDao.java

@@ -2,8 +2,18 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface StudentPaymentOrderDetailDao extends BaseDAO<Long, StudentPaymentOrderDetail> {
 
-	
+
+    /**
+     * 批量添加订单详情
+     *
+     * @param studentPaymentOrderDetailList
+     * @return
+     */
+    int batchAdd(@Param("studentPaymentOrderDetailList") List<StudentPaymentOrderDetail> studentPaymentOrderDetailList);
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysConfigDao.java

@@ -5,5 +5,13 @@ import com.ym.mec.common.dal.BaseDAO;
 
 public interface SysConfigDao extends BaseDAO<Long, SysConfig> {
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/9
+     * @params [paramName]
+     * @return com.ym.mec.biz.dal.entity.SysConfig
+     * @describe 根据配置名称获取配置信息
+     */
+    SysConfig findByParamName(String paramName);
 	
 }

+ 0 - 11
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleDto.java

@@ -23,17 +23,6 @@ public class CourseScheduleDto extends CourseSchedule {
     @ApiModelProperty(value = "班级编号,房间号",required = false)
     private String sealClassId;
 
-    @ApiModelProperty(value = "课程结束后课申诉时间限制")
-    private Integer vipAppealDaysRange;
-
-    public Integer getVipAppealDaysRange() {
-        return vipAppealDaysRange;
-    }
-
-    public void setVipAppealDaysRange(Integer vipAppealDaysRange) {
-        this.vipAppealDaysRange = vipAppealDaysRange;
-    }
-
     public String getSealClassId() {
         return sealClassId;
     }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicCardDto.java

@@ -13,6 +13,9 @@ public class MusicCardDto {
     @ApiModelProperty(value = "乐团编号",required = true)
     private String musicGroupId;
 
+    @ApiModelProperty(value = "科目编号",required = true)
+    private String subjectId;
+
     @ApiModelProperty(value = "乐团名称",required = true)
     private String musicGroupName;
 
@@ -113,4 +116,12 @@ public class MusicCardDto {
     public void setRegisterId(String registerId) {
         this.registerId = registerId;
     }
+
+    public String getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(String subjectId) {
+        this.subjectId = subjectId;
+    }
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterPayDto.java

@@ -10,6 +10,7 @@ public class RegisterPayDto {
     private Integer registerId;
     private String goodsGroupIds;
     private String goodsIds;
+    private String otherGoodsIds;
 
     public Integer getRegisterId() {
         return registerId;
@@ -42,4 +43,12 @@ public class RegisterPayDto {
     public void setAmount(BigDecimal amount) {
         this.amount = amount;
     }
+
+    public String getOtherGoodsIds() {
+        return otherGoodsIds;
+    }
+
+    public void setOtherGoodsIds(String otherGoodsIds) {
+        this.otherGoodsIds = otherGoodsIds;
+    }
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderDetailTypeEnum.java

@@ -7,7 +7,8 @@ import com.ym.mec.common.enums.BaseEnum;
  */
 public enum OrderDetailTypeEnum implements BaseEnum<String, OrderDetailTypeEnum> {
 	MUSICAL("MUSICAL", "乐器"),
-	TEACHING("TEACHING", "教辅"),
+	ACCESSORIES("ACCESSORIES", "辅件"),
+	TEACHING("TEACHING", "教谱"),
 	OTHER("OTHER", "其他"),
 	COURSE("COURSE", "课程");
 

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

@@ -10,6 +10,7 @@ import com.ym.mec.common.service.BaseService;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 public interface CourseScheduleService extends BaseService<Long, CourseSchedule> {
 
@@ -46,7 +47,7 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
      * @Date: 2019/9/17
      * 根据日期获取当日排课信息
      */
-    List<CourseScheduleDto> getStudentCourseSchedulesWithDate(Date classDate);
+    Map getStudentCourseSchedulesWithDate(Date classDate);
 
     /**
      * @Author: Joburgess

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderDetailService.java

@@ -2,7 +2,19 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.common.service.BaseService;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface StudentPaymentOrderDetailService extends BaseService<Long, StudentPaymentOrderDetail> {
 
+
+    /**
+     * 批量添加订单
+     *
+     * @param studentPaymentOrderDetailList
+     * @return
+     */
+    int batchAdd(List<StudentPaymentOrderDetail> studentPaymentOrderDetailList);
+
 }

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -1,10 +1,14 @@
 package com.ym.mec.biz.service;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDto;
 import com.ym.mec.biz.dal.dto.StudentInfo;
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
 import com.ym.mec.common.page.PageInfo;
@@ -79,4 +83,16 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      */
     StudentInfo queryStudentInfo(Integer userId);
 
+
+    /**
+     * 学生注册缴费订单
+     * @param userId
+     * @param amount
+     * @param courseFee
+     * @param goodsGroups
+     * @param goodsList
+     * @return
+     */
+    StudentPaymentOrder addOrder(Integer userId,BigDecimal amount,String orderNo,String paymentChannel,BigDecimal courseFee, List<MusicGroupSubjectGoodsGroup> goodsGroups, List<Goods> goodsList, List<Goods> otherGoodsList);
+
 }

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

@@ -4,11 +4,13 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CourseScheduleComplaintsDao;
 import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
+import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.enums.ParamEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
@@ -40,6 +42,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	private SysUserFeignService sysUserFeignService;
 	@Autowired
 	private CourseScheduleComplaintsDao courseScheduleComplaintsDao;
+	@Autowired
+	private SysConfigDao sysConfigDao;
 
 	@Override
 	public BaseDAO<Long, CourseSchedule> getDAO() {
@@ -91,9 +95,17 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
 	@Override
-	public List<CourseScheduleDto> getStudentCourseSchedulesWithDate(Date classDate) {
+	public Map getStudentCourseSchedulesWithDate(Date classDate) {
+		if(Objects.isNull(classDate)){
+			throw new BizException("参数错误!");
+		}
+
 		SysUser user = sysUserFeignService.queryUserInfo();
-		return courseScheduleDao.getStudentCourseSchedulesWithDate(classDate,user.getId().longValue());
+		SysConfig vip_appeal_days_range = sysConfigDao.findByParamName("vip_appeal_days_range");
+		Map<String,Object> result=new HashMap<>();
+		result.put("vipAppealDaysRange",vip_appeal_days_range.getParanValue());
+		result.put("list",courseScheduleDao.getStudentCourseSchedulesWithDate(classDate,user.getId().longValue()));
+		return result;
 	}
 
 	@Override
@@ -350,7 +362,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		CourseScheduleDto courseSchedules = courseScheduleDao.getCourseSchedules(courseScheduleComplaints.getCourseScheduleId());
 		Date now=new Date();
 		int i = DateUtil.daysBetween(courseSchedules.getEndClassTime(), now);
-		if(i>courseSchedules.getVipAppealDaysRange()){
+		SysConfig vip_appeal_days_range = sysConfigDao.findByParamName("vip_appeal_days_range");
+		if(i>Integer.parseInt(vip_appeal_days_range.getParanValue())){
 			throw new BizException("该课程已超过可申诉时间范围!");
 		}
 		courseScheduleComplaints.setUserId(user.getId());

+ 15 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java

@@ -9,15 +9,21 @@ import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
+import java.util.List;
+
 @Service
-public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long, StudentPaymentOrderDetail>  implements StudentPaymentOrderDetailService {
-	
-	@Autowired
-	private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
+public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long, StudentPaymentOrderDetail> implements StudentPaymentOrderDetailService {
+
+    @Autowired
+    private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
+
+    @Override
+    public BaseDAO<Long, StudentPaymentOrderDetail> getDAO() {
+        return studentPaymentOrderDetailDao;
+    }
 
-	@Override
-	public BaseDAO<Long, StudentPaymentOrderDetail> getDAO() {
-		return studentPaymentOrderDetailDao;
-	}
-	
+    @Override
+    public int batchAdd(List<StudentPaymentOrderDetail> studentPaymentOrderDetailList) {
+        return studentPaymentOrderDetailDao.batchAdd(studentPaymentOrderDetailList);
+    }
 }

+ 95 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -8,6 +9,13 @@ import java.util.Map;
 
 import javax.annotation.Resource;
 
+import com.ym.mec.biz.dal.dto.VipGroupBuyParamsDto;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.common.exception.BizException;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -20,8 +28,6 @@ import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
 import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDto;
 import com.ym.mec.biz.dal.dto.StudentInfo;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
 import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.common.dal.BaseDAO;
@@ -36,6 +42,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     private StudentRegistrationDao studentRegistrationDao;
     @Autowired
     private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private StudentPaymentOrderService studentPaymentOrderService;
+    @Autowired
+    private StudentPaymentOrderDetailService studentPaymentOrderDetailService;
 
     @Override
     public BaseDAO<Long, StudentRegistration> getDAO() {
@@ -123,8 +133,87 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         return studentRegistration;
     }
 
-	@Override
-	public StudentInfo queryStudentInfo(Integer userId) {
-		return studentRegistrationDao.queryStudentInfo(userId);
-	}
+    @Override
+    public StudentInfo queryStudentInfo(Integer userId) {
+        return studentRegistrationDao.queryStudentInfo(userId);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public StudentPaymentOrder addOrder(Integer userId, BigDecimal amount, String orderNo, String paymentChannel, BigDecimal courseFee, List<MusicGroupSubjectGoodsGroup> goodsGroups, List<Goods> goodsList, List<Goods> otherGoodsList) {
+
+        Date date = new Date();
+        StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
+        studentPaymentOrder.setUserId(userId);
+        studentPaymentOrder.setOrderNo(orderNo);
+        studentPaymentOrder.setType(OrderTypeEnum.APPLY);
+        studentPaymentOrder.setExpectAmount(amount);
+        studentPaymentOrder.setActualAmount(amount);
+        studentPaymentOrder.setStatus(DealStatusEnum.ING);
+        studentPaymentOrder.setPaymentChannel(paymentChannel);
+        studentPaymentOrderService.insert(studentPaymentOrder);
+
+        ArrayList<StudentPaymentOrderDetail> studentPaymentOrderDetailList = new ArrayList<>();
+        StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
+        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.COURSE);
+        studentPaymentOrderDetail.setPrice(courseFee);
+        studentPaymentOrderDetail.setCreateTime(date);
+        studentPaymentOrderDetail.setUpdateTime(date);
+        studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
+        studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
+        //乐器及打包辅件
+        if (goodsGroups != null) {
+            for (MusicGroupSubjectGoodsGroup goodsGroup : goodsGroups) {
+                StudentPaymentOrderDetail studentPaymentOrderDetail4goodsGroup = new StudentPaymentOrderDetail();
+                OrderDetailTypeEnum type = null;
+                if (goodsGroup.getType().equals(GoodsType.INSTRUMENT)) {
+                    type = OrderDetailTypeEnum.MUSICAL;
+                } else if (goodsGroup.getType().equals(GoodsType.ACCESSORIES)) {
+                    type = OrderDetailTypeEnum.ACCESSORIES;
+                } else if (goodsGroup.getType().equals(GoodsType.OTHER)) {
+                    type = OrderDetailTypeEnum.TEACHING;
+                }
+                studentPaymentOrderDetail4goodsGroup.setType(type);
+                studentPaymentOrderDetail4goodsGroup.setPrice(goodsGroup.getPrice());
+                studentPaymentOrderDetail4goodsGroup.setGoodsIdList(goodsGroup.getGoodsIdList());
+                studentPaymentOrderDetail4goodsGroup.setCreateTime(date);
+                studentPaymentOrderDetail4goodsGroup.setUpdateTime(date);
+                studentPaymentOrderDetail4goodsGroup.setPaymentOrderId(studentPaymentOrder.getId());
+                studentPaymentOrderDetailList.add(studentPaymentOrderDetail4goodsGroup);
+            }
+        }
+
+        //单独辅件
+        if (goodsList != null) {
+            for (Goods goods : goodsList) {
+                StudentPaymentOrderDetail studentPaymentOrderDetail4goods = new StudentPaymentOrderDetail();
+                studentPaymentOrderDetail4goods.setType(OrderDetailTypeEnum.ACCESSORIES);
+                studentPaymentOrderDetail4goods.setPrice(goods.getGroupPurchasePrice());
+                studentPaymentOrderDetail4goods.setGoodsIdList(goods.getId().toString());
+                studentPaymentOrderDetail4goods.setCreateTime(date);
+                studentPaymentOrderDetail4goods.setUpdateTime(date);
+                studentPaymentOrderDetail4goods.setPaymentOrderId(studentPaymentOrder.getId());
+                studentPaymentOrderDetailList.add(studentPaymentOrderDetail4goods);
+
+            }
+        }
+        //单独教谱
+        if (otherGoodsList != null) {
+            for (Goods goods : otherGoodsList) {
+                StudentPaymentOrderDetail studentPaymentOrderDetail4otherGoods = new StudentPaymentOrderDetail();
+                studentPaymentOrderDetail4otherGoods.setType(OrderDetailTypeEnum.TEACHING);
+                studentPaymentOrderDetail4otherGoods.setPrice(goods.getGroupPurchasePrice());
+                studentPaymentOrderDetail4otherGoods.setGoodsIdList(goods.getId().toString());
+                studentPaymentOrderDetail4otherGoods.setCreateTime(date);
+                studentPaymentOrderDetail4otherGoods.setUpdateTime(date);
+                studentPaymentOrderDetail4otherGoods.setPaymentOrderId(studentPaymentOrder.getId());
+                studentPaymentOrderDetailList.add(studentPaymentOrderDetail4otherGoods);
+            }
+        }
+
+        studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
+
+        return studentPaymentOrder;
+    }
+
 }

+ 3 - 7
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -240,8 +240,8 @@
 
     <select id="getStudentCourseSchedulesWithDate" resultMap="courseScheduleDto">
         SELECT
-            cg.id_ seal_class_id_,
-            cg.name_,
+            cgsm.class_group_id_ seal_class_id_,
+            cs.name_,
             cs.type_,
             cs.id_,
             cs.class_date_,
@@ -249,15 +249,11 @@
             CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
             cs.status_,
 	        su.username_ teacher_name_,
-	        sa.status_ attendance_status_,
-			sc.paran_value_
+	        cgsm.status_ attendance_status_
         FROM
             course_schedule cs
             LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
-            LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
             LEFT JOIN class_group_student_mapper cgsm ON cgsm.class_group_id_ = cs.class_group_id_
-	        LEFT JOIN student_attendance sa ON cs.id_=sa.course_schedule_id_ AND sa.user_id_=#{studentId}
-			LEFT JOIN sys_config sc ON sc.param_name_="vip_appeal_days_range"
         WHERE
             cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
             AND cgsm.user_id_ = #{studentId}

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

@@ -140,6 +140,7 @@
 		<result column="register_id_" property="registerId" />
 		<result column="user_name_" property="userName" />
 		<result column="subject_name_" property="subjectName" />
+		<result column="subject_id_" property="subjectId" />
 		<result column="current_class_" property="currentClass" />
 		<result column="current_grade_" property="currentGrade" />
 		<result column="music_group_name_" property="musicGroupName" />
@@ -151,7 +152,7 @@
 
     <select id="queryUserMusicGroups" resultMap="queryUserMusicGroupsMap">
 		SELECT sr.id_ register_id_,sr.name_ user_name_,sr.current_class_,sr.current_grade_,
-		sr.payment_status_,mg.name_ music_group_name_,s.name_ subject_name_,mg.id_ music_group_id_
+		sr.payment_status_,mg.name_ music_group_name_,s.name_ subject_name_,s.id_ subject_id_,mg.id_ music_group_id_
 		FROM student_registration sr
 		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
 		LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_

+ 9 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderDetailMapper.xml

@@ -77,4 +77,13 @@
     <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM student_payment_order_detail
 	</select>
+
+    <insert id="batchAdd" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
+        INSERT INTO student_payment_order_detail
+        (id_,type_,goods_id_list_,price_,create_time_,update_time_,payment_order_id_)
+        VALUES
+        <foreach collection="studentPaymentOrderDetailList" item="orderDetail" separator=",">
+            (#{orderDetail.id},#{orderDetail.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{orderDetail.goodsIdList},#{orderDetail.price},#{orderDetail.createTime},#{orderDetail.updateTime},#{orderDetail.paymentOrderId})
+        </foreach>
+    </insert>
 </mapper>

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

@@ -75,4 +75,7 @@
 		SELECT COUNT(*) FROM
 		sys_config
 	</select>
+	<select id="findByParamName" resultMap="SysConfig">
+		SELECT * FROM sys_config WHERE param_name_=#{paramName}
+	</select>
 </mapper>

+ 55 - 55
mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml

@@ -52,61 +52,61 @@
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.VipGroupActivity">
 		UPDATE vip_group_activity <set>
-<if test="salaryReadonlyFlag != null">
-salary_readonly_flag_ = #{salaryReadonlyFlag},
-</if>
-<if test="organId != null">
-organ_id_ = #{organId},
-</if>
-<if test="id != null">
-id_ = #{id},
-</if>
-<if test="giveClassPaySalaryFlag != null">
-give_class_pay_salary_flag_ = #{giveClassPaySalaryFlag},
-</if>
-<if test="coursesEndTime != null">
-courses_end_time_ = #{coursesEndTime},
-</if>
-<if test="attribute1 != null">
-attribute1_ = #{attribute1},
-</if>
-<if test="endTime != null">
-end_time_ = #{endTime},
-</if>
-<if test="attribute2 != null">
-attribute2_ = #{attribute2},
-</if>
-<if test="name != null">
-name_ = #{name},
-</if>
-<if test="startTime != null">
-start_time_ = #{startTime},
-</if>
-<if test="attribute3 != null">
-attribute3_ = #{attribute3},
-</if>
-<if test="createTime != null">
-create_time_ = #{createTime},
-</if>
-<if test="vipGroupCategoryIdList != null">
-vip_group_category_id_list_ = #{vipGroupCategoryIdList},
-</if>
-<if test="updateTime != null">
-update_time_ = #{updateTime},
-</if>
-<if test="description != null">
-description_ = #{description},
-</if>
-<if test="salarySettlementJson != null">
-salary_settlement_json_ = #{salarySettlementJson},
-</if>
-<if test="coursesStartTime != null">
-courses_start_time_ = #{coursesStartTime},
-</if>
-<if test="type != null">
-type_ = #{type},
-</if>
-</set> WHERE id_ = #{id} 
+			<if test="salaryReadonlyFlag != null">
+			salary_readonly_flag_ = #{salaryReadonlyFlag},
+			</if>
+			<if test="organId != null">
+			organ_id_ = #{organId},
+			</if>
+			<if test="id != null">
+			id_ = #{id},
+			</if>
+			<if test="giveClassPaySalaryFlag != null">
+			give_class_pay_salary_flag_ = #{giveClassPaySalaryFlag},
+			</if>
+			<if test="coursesEndTime != null">
+			courses_end_time_ = #{coursesEndTime},
+			</if>
+			<if test="attribute1 != null">
+			attribute1_ = #{attribute1},
+			</if>
+			<if test="endTime != null">
+			end_time_ = #{endTime},
+			</if>
+			<if test="attribute2 != null">
+			attribute2_ = #{attribute2},
+			</if>
+			<if test="name != null">
+			name_ = #{name},
+			</if>
+			<if test="startTime != null">
+			start_time_ = #{startTime},
+			</if>
+			<if test="attribute3 != null">
+			attribute3_ = #{attribute3},
+			</if>
+			<if test="createTime != null">
+			create_time_ = #{createTime},
+			</if>
+			<if test="vipGroupCategoryIdList != null">
+			vip_group_category_id_list_ = #{vipGroupCategoryIdList},
+			</if>
+			<if test="updateTime != null">
+			update_time_ = #{updateTime},
+			</if>
+			<if test="description != null">
+			description_ = #{description},
+			</if>
+			<if test="salarySettlementJson != null">
+			salary_settlement_json_ = #{salarySettlementJson},
+			</if>
+			<if test="coursesStartTime != null">
+			courses_start_time_ = #{coursesStartTime},
+			</if>
+			<if test="type != null">
+			type_ = #{type},
+			</if>
+			</set> WHERE id_ = #{id}
 	</update>
 	
 	<!-- 根据主键删除一条记录 -->

+ 12 - 3
mec-education/src/main/java/com/ym/mec/education/controller/TeacherController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.education.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.education.base.BaseResponse;
 import com.ym.mec.education.base.PageResponse;
 import com.ym.mec.education.req.HomeWorkReq;
@@ -44,7 +45,6 @@ public class TeacherController {
 
 
     /**
-     *
      * @param req
      * @return
      */
@@ -60,12 +60,21 @@ public class TeacherController {
     }
 
     /**
-     *
      * @return
      */
     @PostMapping(value = "/teacherVipClass")
-    public PageResponse teacherVipClass(@RequestBody TeacherReq req){
+    public PageResponse teacherVipClass(@RequestBody TeacherReq req) {
 
         return teacherService.teacherVipClass(req);
     }
+
+    /**
+     * 老师的日程安排
+     * @param teacherReq
+     * @return
+     */
+    @PostMapping("/dailySchedule")
+    public PageResponse dailySchedule(@RequestBody TeacherReq teacherReq) {
+        return teacherService.dailySchedule(teacherReq);
+    }
 }

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/enums/SignStatusEnum.java

@@ -3,7 +3,7 @@ package com.ym.mec.education.enums;
 import com.ym.mec.common.enums.BaseEnum;
 import java.util.Arrays;
 
-//状态(1正常签到,0异常签到,2正常签退)
+//老师签到状态(1正常签到,0异常签到,2正常签退)
 public enum SignStatusEnum implements BaseEnum<Integer, SignStatusEnum> {
     SIGN(1,"正常签到"),
     EXCEPTION(0,"异常签到"),

+ 4 - 0
mec-education/src/main/java/com/ym/mec/education/req/TeacherReq.java

@@ -4,6 +4,7 @@ import com.ym.mec.education.base.BaseQuery;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.ToString;
+import java.util.Date;
 
 /**
  * @version V1.0
@@ -18,4 +19,7 @@ public class TeacherReq extends BaseQuery {
 
     @ApiModelProperty(value = "老师编号")
     private Integer userId;
+
+    @ApiModelProperty(value = "日程安排时间")
+    private Date date;
 }

+ 34 - 0
mec-education/src/main/java/com/ym/mec/education/resp/TeacherDailyScheduleResp.java

@@ -0,0 +1,34 @@
+package com.ym.mec.education.resp;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+
+/**
+ * @program: mec
+ * @description: 老师日程安排
+ * @author: xw
+ * @create: 2019-10-08 17:24
+ */
+@Data
+@ApiModel(description = "老师日程安排")
+@Accessors(chain = true)
+public class TeacherDailyScheduleResp implements Serializable {
+
+    @ApiModelProperty(value = "课程类型")
+    private String courseType;
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+    @ApiModelProperty(value = "老师签到情况")
+    private String signInStatus;
+    @ApiModelProperty(value = "到课比")
+    private String attendanceRate;
+    @ApiModelProperty(value = "请假人数")
+    private Integer leaveNum;
+    @ApiModelProperty(value = "上课时间")
+    private String classTime;
+    @ApiModelProperty(value = "学校名称")
+    private String schoolName;
+}

+ 2 - 0
mec-education/src/main/java/com/ym/mec/education/service/ITeacherService.java

@@ -21,4 +21,6 @@ public interface ITeacherService extends IService<Teacher> {
     BaseResponse teacherDetail(TeacherReq req);
 
     PageResponse teacherVipClass(TeacherReq req);
+
+    PageResponse dailySchedule(TeacherReq req);
 }

+ 3 - 2
mec-education/src/main/java/com/ym/mec/education/service/impl/StudentAttendanceServiceImpl.java

@@ -76,7 +76,8 @@ public class StudentAttendanceServiceImpl extends ServiceImpl<StudentAttendanceM
         QueryWrapper<StudentAttendance> leaveWrapper = new QueryWrapper<>();
         QueryWrapper<StudentAttendance> normalWrapper = new QueryWrapper<>();
         //总人数
-        Integer totalCount = count();
+        queryWrapper.lambda().eq(StudentAttendance::getClassGroupId, classGroupReq.getGroupId());
+        Integer totalCount = count(queryWrapper);
         //请假
         leaveWrapper.lambda().eq(true, StudentAttendance::getClassGroupId, classGroupReq.getGroupId())
                 .eq(true, StudentAttendance::getStatus, StudentAttendanceStatusEnum.LEAVE.getCode());
@@ -151,7 +152,7 @@ public class StudentAttendanceServiceImpl extends ServiceImpl<StudentAttendanceM
         Page<StudentAttendanceStatisticsResp> pageResult = new Page();
         ClassGroup classGroup = groupService.getById(classGroupReq.getGroupId());
         if (Objects.nonNull(classGroup)) {
-            List<String> subjectNameList = Lists.newArrayList();
+            List<String> subjectNameList;
             if (Objects.nonNull(classGroupReq.getSubjectId())) {
                 subjectNameList = Lists.newArrayList(subjectService.getById(classGroupReq.getSubjectId()).getName());
             } else {

+ 148 - 69
mec-education/src/main/java/com/ym/mec/education/service/impl/TeacherServiceImpl.java

@@ -4,19 +4,22 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.ym.mec.common.security.AuthUser;
+import com.ym.mec.common.security.SecurityUtils;
 import com.ym.mec.education.base.BaseResponse;
 import com.ym.mec.education.base.PageResponse;
 import com.ym.mec.education.entity.*;
-import com.ym.mec.education.enums.ClassGroupTypeEnum;
-import com.ym.mec.education.enums.CourseStatusEnum;
-import com.ym.mec.education.enums.ReturnCodeEnum;
+import com.ym.mec.education.enums.*;
 import com.ym.mec.education.mapper.TeacherMapper;
 import com.ym.mec.education.req.TeacherReq;
+import com.ym.mec.education.resp.TeacherDailyScheduleResp;
 import com.ym.mec.education.resp.TeacherDetailResp;
 import com.ym.mec.education.resp.TeacherResp;
 import com.ym.mec.education.resp.VipGroupClassResp;
 import com.ym.mec.education.service.*;
 import com.ym.mec.education.utils.DateUtil;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -65,34 +68,43 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> impl
 
     @Autowired
     private ICourseScheduleService courseScheduleService;
+    @Autowired
+    private ITeacherAttendanceService teacherAttendanceService;
+    @Autowired
+    private IStudentAttendanceService studentAttendanceService;
 
 
     @Autowired
     private IVipGroupDefaultClassesCycleService vipGroupDefaultClassesCycleService;
+    @Autowired
+    private IMusicGroupService musicGroupService;
+    @Autowired
+    private ISchoolService schoolService;
+
     @Override
     public PageResponse teacherList(TeacherReq req) {
         PageResponse response = new PageResponse();
         QueryWrapper<SysUser> userQueryWrapper = new QueryWrapper<>();
         List<SysUser> userList = null;
-        if(req != null && StringUtils.isEmpty(req.getName())){
-            userQueryWrapper.like("real_name_",req.getName());
+        if (req != null && StringUtils.isEmpty(req.getName())) {
+            userQueryWrapper.like("real_name_", req.getName());
             userList = sysUserService.list(userQueryWrapper);
         }
         QueryWrapper<Teacher> queryWrapper = new QueryWrapper<>();
         List<Integer> userIds = null;
-        if(!CollectionUtils.isEmpty(userList)){
+        if (!CollectionUtils.isEmpty(userList)) {
             userIds = userList.stream().map(SysUser::getId).collect(Collectors.toList());
-            queryWrapper.in("id_",userIds);
+            queryWrapper.in("id_", userIds);
         }
 
 
-        IPage<Teacher> page = new Page(req.getPageNo() == null ? 1 : req.getPageNo(),req.getPageSize() == null ? 10 : req.getPageSize());
-        IPage<Teacher> teacherIPage = this.page(page,queryWrapper);
+        IPage<Teacher> page = new Page(req.getPageNo() == null ? 1 : req.getPageNo(), req.getPageSize() == null ? 10 : req.getPageSize());
+        IPage<Teacher> teacherIPage = this.page(page, queryWrapper);
 
         List<Teacher> teacherList = teacherIPage.getRecords();
         List<TeacherResp> teacherRespList = new ArrayList<>();
-        if(!CollectionUtils.isEmpty(teacherList)){
-            teacherList.forEach(e ->{
+        if (!CollectionUtils.isEmpty(teacherList)) {
+            teacherList.forEach(e -> {
                 TeacherResp teacherResp = new TeacherResp();
                 String ids[] = e.getSubjectId().split(",");
                 List<String> stringB = Arrays.asList(ids);
@@ -105,19 +117,19 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> impl
                 }
                 teacherResp.setUserId(e.getId());
                 SysUser sysUser = sysUserService.getById(e.getId());
-                if(sysUser != null){
+                if (sysUser != null) {
                     teacherResp.setAvatar(sysUser.getAvatar());
                     teacherResp.setName(sysUser.getRealName());
                 }
                 QueryWrapper<ClassGroupTeacherMapper> queryWrapper1 = new QueryWrapper<>();
-                queryWrapper1.eq("user_id_",e.getId());
+                queryWrapper1.eq("user_id_", e.getId());
                 List<ClassGroupTeacherMapper> classGroupTeacherMappers = classGroupTeacherMapperService.list(queryWrapper1);
-                if(!CollectionUtils.isEmpty(classGroupTeacherMappers)){
+                if (!CollectionUtils.isEmpty(classGroupTeacherMappers)) {
                     List<Integer> classId = classGroupTeacherMappers.stream().map(ClassGroupTeacherMapper::getClassGroupId).collect(Collectors.toList());
                     QueryWrapper<ClassGroup> groupQueryWrapper = new QueryWrapper<>();
-                    groupQueryWrapper.eq("id_",classId);
+                    groupQueryWrapper.eq("id_", classId);
                     List<ClassGroup> classGroups = classGroupService.list(groupQueryWrapper);
-                    if(!CollectionUtils.isEmpty(classGroups)){
+                    if (!CollectionUtils.isEmpty(classGroups)) {
                         List<String> className = classGroups.stream().map(ClassGroup::getName).collect(Collectors.toList());
 
                         teacherResp.setClassName(className);
@@ -139,61 +151,60 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> impl
     public BaseResponse teacherDetail(TeacherReq req) {
 
         TeacherDetailResp teacherDetailResp = new TeacherDetailResp();
-        if(req == null || req.getUserId() == null){
-            return  BaseResponse.errorParam();
+        if (req == null || req.getUserId() == null) {
+            return BaseResponse.errorParam();
         }
         QueryWrapper<ClassGroupTeacherMapper> mapperQueryWrapper = new QueryWrapper<>();
-        mapperQueryWrapper.eq("user_id_",req.getUserId());
-        List<ClassGroupTeacherMapper> groupTeacherMapperList =  classGroupTeacherMapperService.list(mapperQueryWrapper);
+        mapperQueryWrapper.eq("user_id_", req.getUserId());
+        List<ClassGroupTeacherMapper> groupTeacherMapperList = classGroupTeacherMapperService.list(mapperQueryWrapper);
 
-        if(!CollectionUtils.isEmpty(groupTeacherMapperList)){
-            List<Integer> classIds = groupTeacherMapperList.stream().map(ClassGroupTeacherMapper :: getClassGroupId).collect(Collectors.toList());
+        if (!CollectionUtils.isEmpty(groupTeacherMapperList)) {
+            List<Integer> classIds = groupTeacherMapperList.stream().map(ClassGroupTeacherMapper::getClassGroupId).collect(Collectors.toList());
             QueryWrapper<ClassGroup> queryWrapper = new QueryWrapper<>();
-            queryWrapper.in("id_",classIds);
+            queryWrapper.in("id_", classIds);
             List<ClassGroup> classGroups = classGroupService.list(queryWrapper);
-            if(!CollectionUtils.isEmpty(classGroups)){
+            if (!CollectionUtils.isEmpty(classGroups)) {
                 List<ClassGroup> norClass = classGroups.stream().filter(e -> ClassGroupTypeEnum.NORMAL.getCode().equalsIgnoreCase(e.getType()) ||
-                                ClassGroupTypeEnum.MIX.getCode().equalsIgnoreCase(e.getType()) ||  ClassGroupTypeEnum.HIGH.getCode().equalsIgnoreCase(e.getType())).collect(Collectors.toList());
+                    ClassGroupTypeEnum.MIX.getCode().equalsIgnoreCase(e.getType()) || ClassGroupTypeEnum.HIGH.getCode().equalsIgnoreCase(e.getType())).collect(Collectors.toList());
 
                 List<ClassGroup> vipClass = classGroups.stream().filter(e -> ClassGroupTypeEnum.VIP.getCode().equalsIgnoreCase(e.getType())).collect(Collectors.toList());
-                if(!CollectionUtils.isEmpty(norClass)){
+                if (!CollectionUtils.isEmpty(norClass)) {
                     Integer norCount = norClass.stream().mapToInt(ClassGroup::getTotalClassTimes).sum();
                     teacherDetailResp.setGroupClassNum(norCount * norClass.size());
                 }
 
-                if(!CollectionUtils.isEmpty(vipClass)){
+                if (!CollectionUtils.isEmpty(vipClass)) {
                     Integer vipCount = vipClass.stream().mapToInt(ClassGroup::getTotalClassTimes).sum();
                     teacherDetailResp.setVipClassNum(vipCount * vipClass.size());
                 }
                 QueryWrapper<DemoGroup> demoGroupQueryWrapper = new QueryWrapper<>();
-                demoGroupQueryWrapper.eq("user_id_",req.getUserId());
+                demoGroupQueryWrapper.eq("user_id_", req.getUserId());
                 List<DemoGroup> demoGroupList = demoGroupService.list(demoGroupQueryWrapper);
-                if(!CollectionUtils.isEmpty(demoGroupList)){
-                    List<Long> demoId = demoGroupList.stream().map(e ->e.getId()).collect(Collectors.toList());
+                if (!CollectionUtils.isEmpty(demoGroupList)) {
+                    List<Long> demoId = demoGroupList.stream().map(e -> e.getId()).collect(Collectors.toList());
                     QueryWrapper<DemoGroupCoursesPlan> planQueryWrapper = new QueryWrapper<>();
-                    planQueryWrapper.in("demo_group_id_",demoId);
-                    List<DemoGroupCoursesPlan> demoGroupCoursesPlans =  iDemoGroupCoursesPlanService.list(planQueryWrapper);
-                    if(!CollectionUtils.isEmpty(demoGroupCoursesPlans)){
+                    planQueryWrapper.in("demo_group_id_", demoId);
+                    List<DemoGroupCoursesPlan> demoGroupCoursesPlans = iDemoGroupCoursesPlanService.list(planQueryWrapper);
+                    if (!CollectionUtils.isEmpty(demoGroupCoursesPlans)) {
                         Map<Date, List<DemoGroupCoursesPlan>> collect = demoGroupCoursesPlans.stream()
-                                .collect(
-                                        Collectors.groupingBy(DemoGroupCoursesPlan::getCourseDate));
-
+                            .collect(
+                                Collectors.groupingBy(DemoGroupCoursesPlan::getCourseDate));
 
 
-                        if(!CollectionUtils.isEmpty(collect)) {
+                        if (!CollectionUtils.isEmpty(collect)) {
                             List<TeacherDetailResp.InnerDemoGroup> innerDemoGroups = new ArrayList<>();
                             for (Date key : collect.keySet()) {
                                 TeacherDetailResp.InnerDemoGroup demoGroup = new TeacherDetailResp.InnerDemoGroup();
-                                demoGroup.setDateStr(DateUtil.date2String(key,DateUtil.DATE_FORMAT));
+                                demoGroup.setDateStr(DateUtil.date2String(key, DateUtil.DATE_FORMAT));
                                 demoGroup.setWeek(DateUtil.date2Week(key));
 
                                 List<DemoGroupCoursesPlan> demoGroupCoursesPlans1 = collect.get(key);
-                                if(!CollectionUtils.isEmpty(demoGroupCoursesPlans1)){
+                                if (!CollectionUtils.isEmpty(demoGroupCoursesPlans1)) {
                                     List<TeacherDetailResp.DemoGroupPlan> planList = new ArrayList<>();
-                                    demoGroupCoursesPlans1.forEach(e ->{
+                                    demoGroupCoursesPlans1.forEach(e -> {
                                         TeacherDetailResp.DemoGroupPlan demoGroupPlan = new TeacherDetailResp.DemoGroupPlan();
-                                        demoGroupPlan.setStartTime(DateUtil.date2String(e.getStartTime(),DateUtil.TIME_FORMAT));
-                                        demoGroupPlan.setEndTime(DateUtil.date2String(e.getEndTime(),DateUtil.TIME_FORMAT));
+                                        demoGroupPlan.setStartTime(DateUtil.date2String(e.getStartTime(), DateUtil.TIME_FORMAT));
+                                        demoGroupPlan.setEndTime(DateUtil.date2String(e.getEndTime(), DateUtil.TIME_FORMAT));
                                         planList.add(demoGroupPlan);
                                     });
                                     demoGroup.setDemoGroupPlans(planList);
@@ -202,12 +213,12 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> impl
                             }
 
                             QueryWrapper<CourseSchedule> scheduleQueryWrapper = new QueryWrapper<>();
-                            scheduleQueryWrapper.eq("teacher_id_",req.getUserId());
+                            scheduleQueryWrapper.eq("teacher_id_", req.getUserId());
                             scheduleQueryWrapper.eq("status_", CourseStatusEnum.OVER.getCode());
                             List<CourseSchedule> courseSchedules = courseScheduleService.list(scheduleQueryWrapper);
-                            if(!CollectionUtils.isEmpty(courseSchedules)){
+                            if (!CollectionUtils.isEmpty(courseSchedules)) {
                                 teacherDetailResp.setUsed(courseSchedules.size());
-                            }else{
+                            } else {
                                 teacherDetailResp.setUsed(0);
                             }
 
@@ -221,14 +232,14 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> impl
             }
 
             QueryWrapper<TeacherLeaveRecord> teacherLeaveRecordQueryWrapper = new QueryWrapper<>();
-            teacherLeaveRecordQueryWrapper.eq("user_id_",req.getUserId());
+            teacherLeaveRecordQueryWrapper.eq("user_id_", req.getUserId());
             List<TeacherLeaveRecord> teacherLeaveRecordList = teacherLeaveRecordService.list(teacherLeaveRecordQueryWrapper);
-            if(!CollectionUtils.isEmpty(teacherLeaveRecordList)){
+            if (!CollectionUtils.isEmpty(teacherLeaveRecordList)) {
                 AtomicReference<Integer> count = new AtomicReference<>(0);
-                teacherLeaveRecordList.forEach(e ->{
+                teacherLeaveRecordList.forEach(e -> {
 
-                    Integer hour = DateUtil.subMin(e.getStartTime(),e.getEndTime());
-                    if (hour != null){
+                    Integer hour = DateUtil.subMin(e.getStartTime(), e.getEndTime());
+                    if (hour != null) {
                         count.set(count.get() + hour);
                     }
                 });
@@ -243,56 +254,56 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> impl
     public PageResponse teacherVipClass(TeacherReq req) {
 
         PageResponse response = new PageResponse();
-        if(req == null && req.getUserId() == null){
+        if (req == null && req.getUserId() == null) {
             return PageResponse.errorParam();
         }
 
-        IPage page = new Page(req.getPageNo() == null ? 1 : req.getPageNo(),req.getPageSize() == null ? 10 : req.getPageSize());
+        IPage page = new Page(req.getPageNo() == null ? 1 : req.getPageNo(), req.getPageSize() == null ? 10 : req.getPageSize());
         QueryWrapper<VipGroup> vipGroupQueryWrapper = new QueryWrapper<>();
-        vipGroupQueryWrapper.eq("user_id_",req.getUserId());
-        IPage<VipGroup> vipGroupPage = vipGroupService.page(page,vipGroupQueryWrapper);
+        vipGroupQueryWrapper.eq("user_id_", req.getUserId());
+        IPage<VipGroup> vipGroupPage = vipGroupService.page(page, vipGroupQueryWrapper);
 
         List<VipGroup> vipGroupList = vipGroupPage.getRecords();
         List<VipGroupClassResp> vipGroupClassRespList = new ArrayList<>();
-        if(!CollectionUtils.isEmpty(vipGroupList)){
+        if (!CollectionUtils.isEmpty(vipGroupList)) {
 
-            vipGroupList.forEach(e ->{
+            vipGroupList.forEach(e -> {
                 VipGroupClassResp vipGroupClassResp = new VipGroupClassResp();
                 vipGroupClassResp.setVipGroupName(e.getName());
 
-                VipGroupCategory vipGroupCategory =  vipGroupCategoryService.getById(e.getVipGroupCategoryId());
-                if(vipGroupCategory != null){
+                VipGroupCategory vipGroupCategory = vipGroupCategoryService.getById(e.getVipGroupCategoryId());
+                if (vipGroupCategory != null) {
                     vipGroupClassResp.setVipClassType(vipGroupCategory.getName());
                 }
 
                 QueryWrapper<CourseSchedule> scheduleQueryWrapper = new QueryWrapper<>();
-                scheduleQueryWrapper.eq("teacher_id_",req.getUserId());
+                scheduleQueryWrapper.eq("teacher_id_", req.getUserId());
                 List<CourseSchedule> courseSchedules = courseScheduleService.list(scheduleQueryWrapper);
-                if(!CollectionUtils.isEmpty(courseSchedules)){
-                    courseSchedules.forEach(c ->{
-                        c.setClassDateStr(DateUtil.date2String(c.getClassDate(),DateUtil.DATE_FORMAT_EXTRA));
+                if (!CollectionUtils.isEmpty(courseSchedules)) {
+                    courseSchedules.forEach(c -> {
+                        c.setClassDateStr(DateUtil.date2String(c.getClassDate(), DateUtil.DATE_FORMAT_EXTRA));
 
                     });
-                    Map<String,List<CourseSchedule>> map = courseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getClassDateStr));
+                    Map<String, List<CourseSchedule>> map = courseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getClassDateStr));
 
-                    if(!CollectionUtils.isEmpty(map)){
+                    if (!CollectionUtils.isEmpty(map)) {
 
                         int count1 = map.size();
-                        int count2 =0;
+                        int count2 = 0;
                         for (Map.Entry<String, List<CourseSchedule>> entry : map.entrySet()) {
 
-                            if(!CollectionUtils.isEmpty(entry.getValue())){
+                            if (!CollectionUtils.isEmpty(entry.getValue())) {
                                 count2 = count2 + entry.getValue().size();
                             }
 
                         }
                         //月平均排課
 
-                        if(count1 <= count2){
+                        if (count1 <= count2) {
                             vipGroupClassResp.setClassNum(1);
-                        }else{
+                        } else {
 
-                            vipGroupClassResp.setClassNum(count2%count1);
+                            vipGroupClassResp.setClassNum(count2 % count1);
                         }
 
                     }
@@ -306,4 +317,72 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> impl
         response.setMessage(ReturnCodeEnum.CODE_200.getValue());
         return response;
     }
+
+    @Override
+    public PageResponse dailySchedule(TeacherReq req) {
+        AuthUser user = SecurityUtils.getUser();
+        Optional<AuthUser> optional = Optional.ofNullable(user);
+        Page<TeacherDailyScheduleResp> pageResult = new Page<>();
+        Integer userId;
+        if (optional.isPresent()) {
+            userId = optional.get().getUserId();
+        } else {
+            if (Objects.isNull(req.getUserId())) {
+                return PageResponse.errorParam();
+            }
+            userId = req.getUserId();
+        }
+        List<TeacherDailyScheduleResp> list = Lists.newArrayList();
+        Page<CourseSchedule> courseSchedulePage = new Page<>(req.getPageNo(), req.getPageSize());
+        QueryWrapper<CourseSchedule> courseScheduleQueryWrapper = new QueryWrapper<>();
+        courseScheduleQueryWrapper.lambda().eq(CourseSchedule::getTeacherId, userId)
+            .eq(Objects.isNull(req.getDate()), CourseSchedule::getClassDate, req.getDate());
+        IPage<CourseSchedule> page = courseScheduleService.page(courseSchedulePage, courseScheduleQueryWrapper);
+        BeanUtils.copyProperties(page, pageResult);
+        if (!CollectionUtils.isEmpty(page.getRecords())) {
+            page.getRecords().forEach(courseSchedule -> {
+                TeacherDailyScheduleResp teacherDailyScheduleResp = new TeacherDailyScheduleResp();
+                teacherDailyScheduleResp.setCourseName(courseSchedule.getName())
+                    .setCourseType(CourseSchedule.CourseScheduleType.getMsgByCode(courseSchedule.getType()));
+                if (Objects.nonNull(courseSchedule.getStartClassTime()) && Objects.nonNull(courseSchedule.getEndClassTime())) {
+                    teacherDailyScheduleResp.setClassTime(DateUtil.time2String(courseSchedule.getStartClassTime()) + "-" +
+                        DateUtil.time2String(courseSchedule.getEndClassTime()));
+                }
+                QueryWrapper<TeacherAttendance> teacherAttendanceQueryWrapper = new QueryWrapper<>();
+                teacherAttendanceQueryWrapper.lambda().eq(TeacherAttendance::getCourseScheduleId, courseSchedule.getId())
+                    .eq(TeacherAttendance::getTeacherId, courseSchedule.getTeacherId())
+                    .eq(TeacherAttendance::getClassGroupId, courseSchedule.getClassGroupId());
+                TeacherAttendance teacherAttendance = teacherAttendanceService.getOne(teacherAttendanceQueryWrapper);
+                Optional.ofNullable(teacherAttendance).ifPresent(attendance -> teacherDailyScheduleResp.setSignInStatus
+                    (SignStatusEnum.getMsgByCode(attendance.getSignInStatus())));
+                //考勤总人数
+                QueryWrapper<StudentAttendance> totalQueryWrapper = new QueryWrapper<>();
+                totalQueryWrapper.lambda().eq(StudentAttendance::getCourseScheduleId, courseSchedule.getId());
+                int totalCount = studentAttendanceService.count(totalQueryWrapper);
+                QueryWrapper<StudentAttendance> leaveWrapper = new QueryWrapper<>();
+                //请假人数
+                leaveWrapper.lambda().eq(StudentAttendance::getCourseScheduleId, courseSchedule.getId())
+                    .eq(StudentAttendance::getStatus, StudentAttendanceStatusEnum.LEAVE.getCode());
+                Integer leaveCount = studentAttendanceService.count(leaveWrapper);
+                //已到人数
+                QueryWrapper<StudentAttendance> normalWrapper = new QueryWrapper<>();
+                normalWrapper.lambda().eq(StudentAttendance::getCourseScheduleId, courseSchedule.getId())
+                    .eq(StudentAttendance::getStatus, StudentAttendanceStatusEnum.NORMAL.getCode());
+                Integer normalCount = studentAttendanceService.count(normalWrapper);
+                teacherDailyScheduleResp.setAttendanceRate(normalCount + "/" + totalCount)
+                    .setLeaveNum(leaveCount);
+                ClassGroup classGroup = classGroupService.getById(courseSchedule.getClassGroupId());
+                if (Objects.nonNull(classGroup)) {
+                    MusicGroup musicGroup = musicGroupService.getById(classGroup.getMusicGroupId());
+                    if (Objects.nonNull(musicGroup)) {
+                        School school = schoolService.getById(musicGroup.getSchoolId());
+                        Optional.ofNullable(school).ifPresent(value -> teacherDailyScheduleResp.setSchoolName(value.getName()));
+                    }
+                }
+                list.add(teacherDailyScheduleResp);
+                pageResult.setRecords(list);
+            });
+        }
+        return PageResponse.success(pageResult);
+    }
 }

+ 45 - 32
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -4,10 +4,7 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.MusicGroupSubjectGoodsAndInfoDto;
 import com.ym.mec.biz.dal.dto.RegisterPayDto;
-import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.GoodsType;
 import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 import com.ym.mec.biz.service.*;
@@ -23,10 +20,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @RequestMapping("musicGroup")
 @Api(tags = "乐团服务")
@@ -47,7 +41,8 @@ public class MusicGroupController extends BaseController {
     private GoodsService goodsService;
     @Autowired
     private StudentPaymentOrderService studentPaymentOrderService;
-    @Autowired PayService payService;
+    @Autowired
+    PayService payService;
 
     @ApiOperation("获取学生所在乐团列表")
     @GetMapping(value = "/queryUserMusicGroups")
@@ -102,47 +97,56 @@ public class MusicGroupController extends BaseController {
             return failed("报名信息有误,请核查");
         }
 
-        BigDecimal amount = registerPayDto.getAmount();
-
+        BigDecimal amount = registerPayDto.getAmount(); //前端获取的价格
         BigDecimal orderAmount = new BigDecimal("0");
 
         //获取课程价格
         MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId());
-        orderAmount.add(musicOneSubjectClassPlan.getFee());
+        BigDecimal courseFee = musicOneSubjectClassPlan.getFee();
+        orderAmount = orderAmount.add(courseFee);
 
 
         //乐器及打包辅件
-        if (registerPayDto.getGoodsGroupIds() != null) {
-            List<MusicGroupSubjectGoodsGroup> goodsGroups = musicGroupSubjectGoodsGroupService.findGoodsGroupByIds(registerPayDto.getGoodsGroupIds());
-            goodsGroups.forEach(goodsGroup -> {
-                //辅件价格
-                if (goodsGroup.getType().equals(GoodsType.ACCESSORIES)) {
-                    orderAmount.add(goodsGroup.getPrice());
-                    return;
-                }
-                if (musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {//租赁
-                    orderAmount.add(musicOneSubjectClassPlan.getDepositFee());
-                } else if (musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.GROUP)) {//团购
-                    orderAmount.add(goodsGroup.getPrice()).subtract(goodsGroup.getRemissionCourseFee());//团购减免课程费用
+        List<MusicGroupSubjectGoodsGroup> goodsGroups = null;
+        if (registerPayDto.getGoodsGroupIds() != null && !registerPayDto.getGoodsGroupIds().equals("")) {
+            goodsGroups = musicGroupSubjectGoodsGroupService.findGoodsGroupByIds(registerPayDto.getGoodsGroupIds());
+            for (MusicGroupSubjectGoodsGroup goodsGroup : goodsGroups) {
+                orderAmount = orderAmount.add(goodsGroup.getPrice());
+                //团购乐器减免课程费用
+                if (goodsGroup.getType().equals(GoodsType.INSTRUMENT) && goodsGroup.getRemissionCourseFee() != null && musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.GROUP)) {//团购
+                    orderAmount = orderAmount.subtract(goodsGroup.getRemissionCourseFee());
                 }
-            });
+            }
         }
 
         //单独辅件
-        if (registerPayDto.getGoodsIds() != null) {
-            List<Goods> goodsList = goodsService.findGoodsByIds(registerPayDto.getGoodsIds());
-            goodsList.forEach(goods -> {
-                orderAmount.add(goods.getGroupPurchasePrice());
-            });
+        List<Goods> goodsList = null;
+        if (registerPayDto.getGoodsIds() != null && !registerPayDto.getGoodsIds().equals("")) {
+            goodsList = goodsService.findGoodsByIds(registerPayDto.getGoodsIds());
+            for (Goods goods : goodsList) {
+                orderAmount = orderAmount.add(goods.getGroupPurchasePrice());
+            }
+        }
+
+        //单独教谱
+        List<Goods> otherGoodsList = null;
+        if (registerPayDto.getOtherGoodsIds() != null && !registerPayDto.getOtherGoodsIds().equals("")) {
+            otherGoodsList = goodsService.findGoodsByIds(registerPayDto.getOtherGoodsIds());
+            for (Goods goods : otherGoodsList) {
+                orderAmount = orderAmount.add(goods.getGroupPurchasePrice());
+            }
         }
         if (amount.compareTo(orderAmount) != 0) {
             return failed("商品价格不符");
         }
 
+
         IdWorker idWorker = new IdWorker(0, 0);
         String orderNo = idWorker.nextId();
 
-        Map payMap = payService.getPayMap(orderAmount,orderNo,"https://pay.dayaedu.com/yqpay/notify","http://dev.dayaedu.com","测试订单","测试订单");
+        Map payMap = payService.getPayMap(orderAmount, orderNo, "https://pay.dayaedu.com/api/yqpay/notify", "http://dev.dayaedu.com", "测试订单", "测试订单");
+
+        studentRegistrationService.addOrder(userId, amount, orderNo, "双乾", courseFee, goodsGroups, goodsList, otherGoodsList);
 
         return succeed(payMap);
     }
@@ -150,8 +154,17 @@ public class MusicGroupController extends BaseController {
     @GetMapping("/test")
     public Object test() throws Exception {
 
+        IdWorker idWorker = new IdWorker(0, 0);
+        String orderNo = idWorker.nextId();
         BigDecimal amount = new BigDecimal("200");
-        Map map = payService.getPayMap(amount,"201910113456789386903","https://pay.dayaedu.com/notify","https://baodiu.com","测试订单","测试订单");
+        Map map = payService.getPayMap(amount, orderNo, "https://pay.dayaedu.com/notify", "https://baodiu.com", "测试订单", "测试订单");
         return succeed(map);
     }
+
+    @ApiOperation(value = "订单状态查询")
+    @GetMapping("/getOrderStatus")
+    @ApiImplicitParams({@ApiImplicitParam(name = "orderNo", value = "订单号", required = true, dataType = "String")})
+    public HttpResponseResult getOrderStatus(String orderNo) {
+        return succeed(orderNo);
+    }
 }

+ 2 - 3
mec-student/src/main/java/com/ym/mec/student/controller/StudentVipGroupController.java

@@ -8,7 +8,6 @@ import com.ym.mec.biz.service.SubjectService;
 import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -60,14 +59,14 @@ public class StudentVipGroupController extends BaseController {
         return succeed(vipGroupService.getVipGroupShowDetail(vipGroupId));
     }
 
-    @ApiModelProperty(value = "vip课购买")
+    @ApiOperation(value = "vip课购买")
     @PostMapping("/buyVipGroup")
     public Object buyVipGroup(VipGroupBuyParamsDto vipGroupBuyParams){
         vipGroupService.buyVipGroup(vipGroupBuyParams);
         return succeed();
     }
 
-    @ApiModelProperty(value = "vip课退课")
+    @ApiOperation(value = "vip课退课")
     @PostMapping("/applyRefund")
     public Object applyRefund(Long vipGroupId){
         vipGroupService.applyRefund(vipGroupId,null);

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

@@ -1,5 +1,6 @@
 package com.ym.mec.teacher.controller;
 
+import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.StudentAttendanceService;
@@ -8,6 +9,7 @@ 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.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
@@ -50,4 +52,19 @@ public class TeacherCourseScheduleController extends BaseController {
         return succeed(studentAttendanceService.getCurrentCourseStudents(queryInfo));
     }
 
+
+    @ApiOperation(value = "课时调整")
+    @PostMapping(value = "/classStartDateAdjust",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public Object classStartDateAdjust(ClassDateAdjustDto classDateAdjustDto){
+        scheduleService.classStartDateAdjust(classDateAdjustDto);
+        return succeed();
+    }
+
+    @ApiOperation(value = "课时交换")
+    @GetMapping(value = "/courseSwap",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public Object courseSwap(Long courseScheduleId1,Long courseScheduleId2){
+        scheduleService.courseSwap(courseScheduleId1,courseScheduleId2);
+        return succeed();
+    }
+
 }