瀏覽代碼

Merge remote-tracking branch 'origin/master'

周箭河 5 年之前
父節點
當前提交
f81dfee3d0
共有 25 個文件被更改,包括 806 次插入16 次删除
  1. 35 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/handler/BaseAuthenticationSuccessEventHandler.java
  2. 7 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDao.java
  3. 7 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java
  4. 7 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java
  5. 3 0
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  6. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  7. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysTenantAccountDao.java
  8. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysTenantAccountDetailDao.java
  9. 81 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysTenantAccount.java
  10. 136 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysTenantAccountDetail.java
  11. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysTenantAccountDetailService.java
  12. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysTenantAccountService.java
  13. 37 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherCourseScheduleService.java
  14. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  15. 1 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java
  16. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysTenantAccountDetailServiceImpl.java
  17. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysTenantAccountServiceImpl.java
  18. 119 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherCourseScheduleServiceImpl.java
  19. 76 3
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  20. 102 0
      mec-biz/src/main/resources/config/mybatis/SysTenantAccountDetailMapper.xml
  21. 46 0
      mec-biz/src/main/resources/config/mybatis/SysTenantAccountMapper.xml
  22. 3 0
      mec-client-api/src/main/java/com/ym/mec/im/UserFeignService.java
  23. 7 1
      mec-client-api/src/main/java/com/ym/mec/im/fallback/UserFeignServiceFallback.java
  24. 9 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseGroupController.java
  25. 20 4
      mec-web/src/main/java/com/ym/mec/web/controller/APIController.java

+ 35 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/handler/BaseAuthenticationSuccessEventHandler.java

@@ -12,11 +12,14 @@ import javax.servlet.http.HttpServletResponse;
 import com.ym.mec.common.entity.ImResult;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.im.ImFeignService;
+import com.ym.mec.im.UserFeignService;
+
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
@@ -56,10 +59,15 @@ public class BaseAuthenticationSuccessEventHandler extends SavedRequestAwareAuth
 	private ObjectMapper objectMapper;
 	@Autowired
 	private ImFeignService imFeignService;
+	@Autowired
+	private UserFeignService userFeignService;
 	
 	@Autowired
 	private ClientDetailsService clientDetailsService;
 
+	@Value("${message.lesseeOrganId}")
+	private Integer lesseeOrganId;
+
 	@Autowired
 	private AuthorizationServerTokenServices defaultAuthorizationServerTokenServices;
 
@@ -128,6 +136,33 @@ public class BaseAuthenticationSuccessEventHandler extends SavedRequestAwareAuth
 			Map<String,Object> map = new HashMap<>(3);
 			map.put("password", StringUtils.isEmpty(sysUser.getPassword())?false:true);
 			map.put("authentication",oAuth2AccessToken);
+			
+			String tenantId = "1";
+			if (StringUtils.equalsIgnoreCase(clientId, "TEACHER")) {
+				// 查询老师所在分部
+				Integer organId = userFeignService.queryTeacherOrganId(sysUser.getId());
+				if (organId == 43) {
+					tenantId = "2";
+				}
+			} else if (StringUtils.equalsIgnoreCase(clientId, "STUDENT")) {
+				if (sysUser.getOrganId() == 43) {
+					tenantId = "2";
+				}
+			}
+			map.put("tenantId", tenantId);
+
+			/*map.put("isLessee",false);
+			if("TEACHER".equals(clientId.toUpperCase())){
+				Integer organId = sysUserService.getTeacherOrganId(sysUser.getId());
+				if(organId != null && organId == lesseeOrganId){
+					map.put("isLessee",true);
+				}
+			}else if("STUDENT".equals(clientId.toUpperCase())){
+				if(sysUser.getOrganId() == lesseeOrganId){
+					map.put("isLessee",true);
+				}
+			}*/
+			
 			response.setContentType("application/json; charset=utf-8");
 			HttpResponseResult result = new HttpResponseResult(true, HttpStatus.OK.value(), map, "");
 			response.getWriter().write(objectMapper.writeValueAsString(result));

+ 7 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDao.java

@@ -59,4 +59,11 @@ public interface SysUserDao extends BaseDAO<Integer, SysUser> {
 	 * @param lesseeOrganId
 	 */
 	void insertTeacher(@Param("userId") Integer userId, @Param("lesseeOrganId") Integer lesseeOrganId);
+
+	/**
+	 * 获取教师分部编号
+	 * @param userId
+	 * @return
+	 */
+	Integer getTeacherOrganId(Integer userId);
 }

+ 7 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java

@@ -83,4 +83,11 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
 	 * @return
 	 */
 	SysUserInfo initUser(String phone,String clientId,String isRegister,String isLessee);
+
+	/**
+	 * 获取老师的分部编号
+	 * @param userId
+	 * @return
+	 */
+	Integer getTeacherOrganId(Integer userId);
 }

+ 7 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -148,6 +148,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		if(StringUtils.isNotEmpty(isLessee) && StringUtils.equalsIgnoreCase(clientId,"TEACHER")){
 			SysUser sysUser = new SysUser();
 			sysUser.setPhone(phone);
+			sysUser.setRealName(phone);
 			sysUser.setUserType("TEACHER");
 			sysUserDao.insert(sysUser);
 			//添加用户现金账户
@@ -159,6 +160,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		}else if(StringUtils.isNotEmpty(isLessee) && StringUtils.equalsIgnoreCase(clientId,"STUDENT")){
 			SysUser sysUser = new SysUser();
 			sysUser.setPhone(phone);
+			sysUser.setUsername(phone);
 			sysUser.setUserType("STUDENT");
 			sysUser.setOrganId(lesseeOrganId);
 			sysUserDao.insert(sysUser);
@@ -192,4 +194,9 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		throw new UsernameNotFoundException("404.9");
 	}
 
+	@Override
+	public Integer getTeacherOrganId(Integer userId) {
+		return sysUserDao.getTeacherOrganId(userId);
+	}
+
 }

+ 3 - 0
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -192,4 +192,7 @@
     <select id="findUserBySalt" resultMap="SysUser">
         SELECT * FROM sys_user WHERE salt_ IS NOT NULL AND salt_ = 'replace' AND user_type_ LIKE CONCAT('%',#{userType},'%') LIMIT 1
     </select>
+    <select id="getTeacherOrganId" resultType="java.lang.Integer">
+        SELECT organ_id_ FROM teacher WHERE id_ = #{userId}
+    </select>
 </mapper>

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -188,6 +188,21 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<CourseScheduleDto> getTeacherCourseSchedulesWithDate(@Param("classDate") Date classDate, @Param("teacherId") Long teacherId, @Param("type") String type);
 
     /**
+     * @describe 获取指定日期的课程
+     * @author Joburgess
+     * @date 2020/3/10
+     * @param teacherId: 教师编号
+     * @param classDate: 上课日期
+     * @param groupId:
+     * @param groupType:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
+     */
+    List<CourseScheduleDto> findCourseSchedulesWithDate(@Param("teacherId") Integer teacherId,
+                                                        @Param("classDate") Date classDate,
+                                                        @Param("groupId") String groupId,
+                                                        @Param("groupType") GroupType groupType);
+
+    /**
      * @param classDate:
      * @param teacherId:
      * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
@@ -299,6 +314,21 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<Date> getTeacherCourseScheduleDate(@Param("teacherId") Long teacherId, @Param("month") Date month, @Param("type") String type);
 
     /**
+     * @describe 获取在指定月份有课的日期
+     * @author Joburgess
+     * @date 2020/3/10
+     * @param teacherId: 教师编号
+     * @param month: 月份
+     * @param groupId: 课程组编号
+     * @param groupType: 课程组类型
+     * @return java.util.List<java.util.Date>
+     */
+    List<Date> findHaveClassesDatesWithMonth(@Param("teacherId") Integer teacherId,
+                                             @Param("month") Date month,
+                                             @Param("groupId") String groupId,
+                                             @Param("groupType") GroupType groupType);
+
+    /**
      * @param teacherId: 教师编号
      * @param month:     月份
      * @return java.util.List<java.util.Date>

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

@@ -0,0 +1,7 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.SysTenantAccount;
+
+public interface SysTenantAccountDao extends com.ym.mec.common.dal.BaseDAO<Integer, SysTenantAccount> {
+
+}

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysTenantAccountDetailDao.java

@@ -0,0 +1,9 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.SysTenantAccountDetail;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface SysTenantAccountDetailDao extends BaseDAO<Long, SysTenantAccountDetail> {
+
+	
+}

+ 81 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysTenantAccount.java

@@ -0,0 +1,81 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(sys_tenant_account):
+ */
+public class SysTenantAccount {
+
+	/**  */
+	private Integer userId;
+	
+	/** 可用分钟数 */
+	private Integer availableMinutes;
+	
+	/** 冻结分钟数 */
+	private Integer frozenMinutes;
+	
+	/** 账户状态(0,冻结,1,正常;-1,注销;) */
+	private Integer status;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+	
+	public void setUserId(Integer userId){
+		this.userId = userId;
+	}
+	
+	public Integer getUserId(){
+		return this.userId;
+	}
+			
+	public void setAvailableMinutes(Integer availableMinutes){
+		this.availableMinutes = availableMinutes;
+	}
+	
+	public Integer getAvailableMinutes(){
+		return this.availableMinutes;
+	}
+			
+	public void setFrozenMinutes(Integer frozenMinutes){
+		this.frozenMinutes = frozenMinutes;
+	}
+	
+	public Integer getFrozenMinutes(){
+		return this.frozenMinutes;
+	}
+			
+	public void setStatus(Integer status){
+		this.status = status;
+	}
+	
+	public Integer getStatus(){
+		return this.status;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 136 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysTenantAccountDetail.java

@@ -0,0 +1,136 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(sys_tenant_account_detail):
+ */
+public class SysTenantAccountDetail {
+
+	/**  */
+	private Long id;
+	
+	/**  */
+	private Integer userId;
+	
+	/** 交易类型 */
+	private String transType;
+	
+	/** 交易状态 */
+	private String transStatus;
+	
+	/** 交易流水 */
+	private String transNo;
+	
+	/** 现金数额 */
+	private java.math.BigDecimal transCashAmount;
+	
+	/** 账户总可用分钟数 */
+	private Integer totalAvailableMinutes;
+	
+	/** 交易的分钟数 */
+	private Integer transMinutes;
+	
+	/**  */
+	private String memo;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+	
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setUserId(Integer userId){
+		this.userId = userId;
+	}
+	
+	public Integer getUserId(){
+		return this.userId;
+	}
+			
+	public void setTransType(String transType){
+		this.transType = transType;
+	}
+	
+	public String getTransType(){
+		return this.transType;
+	}
+			
+	public void setTransStatus(String transStatus){
+		this.transStatus = transStatus;
+	}
+	
+	public String getTransStatus(){
+		return this.transStatus;
+	}
+			
+	public void setTransNo(String transNo){
+		this.transNo = transNo;
+	}
+	
+	public String getTransNo(){
+		return this.transNo;
+	}
+			
+	public void setTransCashAmount(java.math.BigDecimal transCashAmount){
+		this.transCashAmount = transCashAmount;
+	}
+	
+	public java.math.BigDecimal getTransCashAmount(){
+		return this.transCashAmount;
+	}
+			
+	public void setTotalAvailableMinutes(Integer totalAvailableMinutes){
+		this.totalAvailableMinutes = totalAvailableMinutes;
+	}
+	
+	public Integer getTotalAvailableMinutes(){
+		return this.totalAvailableMinutes;
+	}
+			
+	public void setTransMinutes(Integer transMinutes){
+		this.transMinutes = transMinutes;
+	}
+	
+	public Integer getTransMinutes(){
+		return this.transMinutes;
+	}
+			
+	public void setMemo(String memo){
+		this.memo = memo;
+	}
+	
+	public String getMemo(){
+		return this.memo;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysTenantAccountDetailService.java

@@ -0,0 +1,8 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.SysTenantAccountDetail;
+import com.ym.mec.common.service.BaseService;
+
+public interface SysTenantAccountDetailService extends BaseService<Long, SysTenantAccountDetail> {
+
+}

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysTenantAccountService.java

@@ -0,0 +1,8 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.SysTenantAccount;
+import com.ym.mec.common.service.BaseService;
+
+public interface SysTenantAccountService extends BaseService<Integer, SysTenantAccount> {
+
+}

+ 37 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherCourseScheduleService.java

@@ -0,0 +1,37 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.dto.CourseScheduleDto;
+import com.ym.mec.biz.dal.enums.GroupType;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/3/10
+ **/
+public interface TeacherCourseScheduleService {
+
+    /**
+     * @describe 获取老师在指定月份有课的日期
+     * @author Joburgess
+     * @date 2020/3/10
+     * @param teacherId: 教师编号
+     * @param month: 月份
+     * @param groupType: 课程组类型
+     * @return java.util.List<java.util.Date>
+     */
+    List<Date> findTeacherHaveClassesDates(Integer teacherId, Date month, String groupId, GroupType groupType);
+
+    /**
+     * @describe 获取老师在指定日期的课程列表
+     * @author Joburgess
+     * @date 2020/3/10
+     * @param teacherId: 教师编号
+     * @param classDate: 上课日期
+     * @param groupType: 课程组类型
+     * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
+     */
+    List<CourseScheduleDto> findCourseSchedulesWithDate(Integer teacherId, Date classDate, String groupId, GroupType groupType);
+
+}

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

@@ -854,7 +854,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         List<Long> courseScheduleIds = teacherCourseSchedulesWithDate.stream()
                 .filter(cs -> cs.getType().equals(CourseSchedule.CourseScheduleType.VIP) ||
                         cs.getType().equals(CourseSchedule.CourseScheduleType.DEMO) ||
-                        cs.getType().equals(CourseSchedule.CourseScheduleType.PRACTICE))
+                        cs.getType().equals(CourseSchedule.CourseScheduleType.PRACTICE) ||
+						cs.getType().equals(CourseScheduleType.COMM))
                 .map(CourseScheduleDto::getId).collect(Collectors.toList());
 
         Map<Integer, String> subjectNameCourseMap = new HashMap<>();

+ 1 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java

@@ -37,16 +37,10 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
     @Autowired
     private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
     @Autowired
-    private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao;
-    @Autowired
     private CourseScheduleDao courseScheduleDao;
     @Autowired
-    private StudentAttendanceDao studentAttendanceDao;
-    @Autowired
     private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
     @Autowired
-    private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
-    @Autowired
     private TeacherAttendanceDao teacherAttendanceDao;
     @Autowired
     private SubjectDao subjectDao;
@@ -78,7 +72,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
         if(Objects.isNull(courseCycleInfo.getCourseCreateStartTime())){
             throw new BizException("请填写课程开始时间");
         }
-        if(Objects.isNull(courseCycleInfo.getCourseTimes())){
+        if(Objects.isNull(courseCycleInfo.getCourseCount())){
             throw new BizException("请填写课程数量");
         }
 

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysTenantAccountDetailServiceImpl.java

@@ -0,0 +1,23 @@
+package com.ym.mec.biz.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.ym.mec.biz.dal.dao.SysTenantAccountDetailDao;
+import com.ym.mec.biz.dal.entity.SysTenantAccountDetail;
+import com.ym.mec.biz.service.SysTenantAccountDetailService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+
+@Service
+public class SysTenantAccountDetailServiceImpl extends BaseServiceImpl<Long, SysTenantAccountDetail>  implements SysTenantAccountDetailService {
+	
+	@Autowired
+	private SysTenantAccountDetailDao sysTenantAccountDetailDao;
+
+	@Override
+	public BaseDAO<Long, SysTenantAccountDetail> getDAO() {
+		return sysTenantAccountDetailDao;
+	}
+	
+}

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysTenantAccountServiceImpl.java

@@ -0,0 +1,23 @@
+package com.ym.mec.biz.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.ym.mec.biz.dal.dao.SysTenantAccountDao;
+import com.ym.mec.biz.dal.entity.SysTenantAccount;
+import com.ym.mec.biz.service.SysTenantAccountService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+
+@Service
+public class SysTenantAccountServiceImpl extends BaseServiceImpl<Integer, SysTenantAccount> implements SysTenantAccountService {
+
+	@Autowired
+	private SysTenantAccountDao sysTenantAccountDao;
+
+	@Override
+	public BaseDAO<Integer, SysTenantAccount> getDAO() {
+		return sysTenantAccountDao;
+	}
+
+}

+ 119 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherCourseScheduleServiceImpl.java

@@ -0,0 +1,119 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
+import com.ym.mec.biz.dal.dao.SubjectDao;
+import com.ym.mec.biz.dal.dto.CourseScheduleDto;
+import com.ym.mec.biz.dal.dto.StudentNameAndPhoneDto;
+import com.ym.mec.biz.dal.entity.SysConfig;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.TeacherCourseScheduleService;
+import com.ym.mec.util.collection.MapUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/3/10
+ */
+@Service
+public class TeacherCourseScheduleServiceImpl implements TeacherCourseScheduleService {
+
+    @Autowired
+    private CourseScheduleDao courseScheduleDao;
+    @Autowired
+    private SubjectDao subjectDao;
+    @Autowired
+    private StudentAttendanceDao studentAttendanceDao;
+    @Autowired
+    private ClassGroupStudentMapperDao classGroupStudentMapperDao;
+    @Autowired
+    private SysConfigService sysConfigService;
+
+    @Override
+    public List<Date> findTeacherHaveClassesDates(Integer teacherId, Date month, String groupId, GroupType type) {
+        return courseScheduleDao.findHaveClassesDatesWithMonth(teacherId,month,groupId,type);
+    }
+
+    @Override
+    public List<CourseScheduleDto> findCourseSchedulesWithDate(Integer teacherId, Date classDate, String groupId, GroupType groupType) {
+        Date now = new Date();
+        if(Objects.isNull(classDate)){
+            classDate=now;
+        }
+        List<CourseScheduleDto> teacherCourseSchedulesWithDate = courseScheduleDao.findCourseSchedulesWithDate(teacherId,classDate,groupId,groupType);
+        List<Long> allCourseScheduleIds = teacherCourseSchedulesWithDate.stream().map(CourseScheduleDto::getId).collect(Collectors.toList());
+        List<Long> courseScheduleIds = teacherCourseSchedulesWithDate.stream().map(CourseScheduleDto::getId).collect(Collectors.toList());
+
+        Map<Integer, String> subjectNameCourseMap = new HashMap<>();
+        Map<Integer, String> subjectIdCourseMap = new HashMap<>();
+        if (!CollectionUtils.isEmpty(courseScheduleIds)) {
+            List<Map<Integer, String>> subjectNameCourseMaps = subjectDao.findSubjectNameCourseMaps(courseScheduleIds);
+            List<Map<Integer, String>> subjectIdCourseMaps = subjectDao.findClassGroupSubjectId(courseScheduleIds);
+            subjectNameCourseMap = MapUtil.convertMybatisMap(subjectNameCourseMaps);
+            subjectIdCourseMap = MapUtil.convertMybatisMap(subjectIdCourseMaps);
+        }
+        List<Map<Integer, Integer>> studentNumCourseMaps = null;
+        if (!CollectionUtils.isEmpty(allCourseScheduleIds)) {
+            studentNumCourseMaps = studentAttendanceDao.countStudentAttendancesByCourses(allCourseScheduleIds);
+        }
+        Map<Integer, Long> studentNumCourseMap = new HashMap<>();
+        if (Objects.nonNull(studentNumCourseMaps)) {
+            studentNumCourseMap = MapUtil.convertIntegerMap(studentNumCourseMaps);
+        }
+
+        if(CollectionUtils.isEmpty(teacherCourseSchedulesWithDate)){
+            return teacherCourseSchedulesWithDate;
+        }
+
+        List<Integer> classGroupIds = teacherCourseSchedulesWithDate.stream().map(CourseScheduleDto::getClassGroupId).collect(Collectors.toList());
+        List<Map<Integer, Integer>> classGroupStudentNumMaps = classGroupStudentMapperDao.countClassGroupsStudentNum(classGroupIds, ClassGroupStudentStatusEnum.NORMAL);
+        Map<Integer, Long> classGroupStudentNumMap = MapUtil.convertIntegerMap(classGroupStudentNumMaps);
+
+        SysConfig advanceLeaveHoursConfig = sysConfigService.findByParamName(SysConfigService.ADVANCE_LEAVE_HOURS);
+        Integer advanceLeaveHours=advanceLeaveHoursConfig.getParanValue(Integer.class);
+        List<Map<Long, Integer>> courseLeaveStudentNumMaps = studentAttendanceDao.countCourseLeaveStudentNumWithFourHoursAgo(allCourseScheduleIds, advanceLeaveHours);
+        Map<Long,Long> courseLeaveStudentNumMap = MapUtil.convertIntegerMap((courseLeaveStudentNumMaps));
+
+        for (CourseScheduleDto courseScheduleDto : teacherCourseSchedulesWithDate) {
+            Long studentNum = studentNumCourseMap.get(courseScheduleDto.getId());
+            if (Objects.nonNull(studentNum)) {
+                courseScheduleDto.setStudentAttendanceIsFirstTime(studentNum > 0 ? 0 : 1);
+            } else {
+                courseScheduleDto.setStudentAttendanceIsFirstTime(1);
+            }
+
+            if (now.before(courseScheduleDto.getStartClassTime())) {
+                courseScheduleDto.setStatus(CourseStatusEnum.NOT_START);
+            } else if (now.after(courseScheduleDto.getEndClassTime())) {
+                courseScheduleDto.setStatus(CourseStatusEnum.OVER);
+            } else {
+                courseScheduleDto.setStatus(CourseStatusEnum.UNDERWAY);
+            }
+            if (Objects.nonNull(courseScheduleDto.getClassGroupId())) {
+                List<StudentNameAndPhoneDto> courseStudentNameAndPhone = classGroupStudentMapperDao.findCourseStudentNameAndPhone(courseScheduleDto.getId().intValue());
+                if(!CollectionUtils.isEmpty(courseStudentNameAndPhone)){
+                    List<String> studentNames = courseStudentNameAndPhone.stream().map(StudentNameAndPhoneDto::getUserName).collect(Collectors.toList());
+                    courseScheduleDto.setStudentNames(org.apache.commons.lang3.StringUtils.join(studentNames, ","));
+                    courseScheduleDto.setStudents(courseStudentNameAndPhone);
+                }
+            }
+            courseScheduleDto.setSubjectName(subjectNameCourseMap.get(courseScheduleDto.getId()));
+            courseScheduleDto.setSubjectId(subjectIdCourseMap.get(courseScheduleDto.getId()));
+            Long leaveStudentNum = courseLeaveStudentNumMap.get(courseScheduleDto.getId());
+            Long normalStudentNum = classGroupStudentNumMap.get(courseScheduleDto.getClassGroupId());
+            if(Objects.nonNull(leaveStudentNum)&&Objects.nonNull(normalStudentNum)&&leaveStudentNum.intValue()==normalStudentNum.intValue()){
+                courseScheduleDto.setEnableAdjustInToday(1);
+            }
+        }
+        return teacherCourseSchedulesWithDate;
+    }
+}

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

@@ -623,6 +623,51 @@
         ORDER BY start_class_time_
     </select>
 
+    <select id="findCourseSchedulesWithDate" resultMap="courseScheduleDto">
+        SELECT
+            cs.id_ seal_class_id_,
+            cg.name_,
+            su.real_name_ teacher_name_,
+            cs.type_,
+            cs.id_,
+            cs.class_group_id_,
+            cs.class_date_,
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+            cs.status_,
+            cs.teacher_id_,
+            cs.actual_teacher_id_,
+            cg.expect_student_num_,
+            cs.schoole_id_,
+            s.name_ school_name_,
+            if(ta.sign_in_status_ IS NULL,0,1) sign_in_status_,
+            if(ta.sign_out_status_ IS NULL,0,1) sign_out_status_,
+            cs.teach_mode_
+        FROM
+            course_schedule cs
+            LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
+            LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+            LEFT JOIN school s ON cs.schoole_id_ = s.id_
+            LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=#{teacherId}
+        WHERE
+        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+        AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
+        <if test="teacherId!=null">
+            AND cs.actual_teacher_id_=#{teacherId}
+        </if>
+        <if test="classDate!=null">
+            AND cs.class_date_ = DATE_FORMAT(#{classDate},'%Y-%m-%d')
+        </if>
+        <if test="groupId!=null">
+            AND cs.music_group_id_=#{groupId}
+        </if>
+        <if test="type!=null and type!=''">
+            AND cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        </if>
+        AND cg.del_flag_ = 0
+        ORDER BY start_class_time_
+    </select>
+
     <select id="getTeacherHistoryCourseSchedulesWithDate" resultMap="courseScheduleDto">
         SELECT cs.id_                                            seal_class_id_,
                cg.name_,
@@ -795,13 +840,13 @@
 
     <select id="getTeacherCourseScheduleDate" resultType="java.util.Date">
         SELECT
-        cs.class_date_
+          cs.class_date_
         FROM
-        course_schedule_teacher_salary csts
+          course_schedule_teacher_salary csts
         LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_
         LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
         WHERE
-        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+          (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
         AND csts.user_id_ = #{teacherId}
         AND cg.del_flag_ = 0
@@ -817,6 +862,34 @@
         GROUP BY cs.class_date_
     </select>
 
+    <select id="findHaveClassesDatesWithMonth" resultType="java.util.Date">
+        SELECT
+          cs.class_date_
+        FROM
+          course_schedule cs
+        LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+        WHERE
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+            AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
+            AND cg.del_flag_ = 0
+            <if test="teacherId!=null">
+                AND cs.actual_teacher_id_=#{teacherId}
+            </if>
+            <if test="month==null">
+                AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
+            </if>
+            <if test="month!=null">
+                AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
+            </if>
+            <if test="groupId!=null">
+                AND cs.music_group_id_=#{groupId}
+            </if>
+            <if test="type!=null and type!=''">
+                AND cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            GROUP BY cs.class_date_
+    </select>
+
     <select id="getTeacherHistoryCourseScheduleDate" resultType="java.util.Date">
         SELECT
         cs.class_date_

+ 102 - 0
mec-biz/src/main/resources/config/mybatis/SysTenantAccountDetailMapper.xml

@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
+<mapper namespace="com.ym.mec.biz.dal.dao.SysTenantAccountDetailDao">
+
+	<resultMap type="com.ym.mec.biz.dal.entity.SysTenantAccountDetail"
+		id="SysTenantAccountDetail">
+		<result column="id_" property="id" />
+		<result column="user_id_" property="userId" />
+		<result column="trans_type_" property="transType" />
+		<result column="trans_status_" property="transStatus" />
+		<result column="trans_no_" property="transNo" />
+		<result column="trans_cash_amount_" property="transCashAmount" />
+		<result column="total_available_minutes_" property="totalAvailableMinutes" />
+		<result column="trans_minutes_" property="transMinutes" />
+		<result column="memo_" property="memo" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="SysTenantAccountDetail">
+		SELECT *
+		FROM sys_tenant_account_detail WHERE id_ = #{id}
+	</select>
+
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="SysTenantAccountDetail">
+		SELECT * FROM
+		sys_tenant_account_detail ORDER BY id_
+	</select>
+
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysTenantAccountDetail"
+		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
+			AS ID FROM DUAL </selectKey> -->
+		INSERT INTO sys_tenant_account_detail
+		(id_,user_id_,trans_type_,trans_status_,trans_no_,trans_cash_amount_,total_available_minutes_,trans_minutes_,memo_,create_time_,update_time_)
+		VALUES(#{id},#{userId},#{transType},#{transStatus},#{transNo},#{transCashAmount},#{totalAvailableMinutes},#{transMinutes},#{memo},#{createTime},#{updateTime})
+	</insert>
+
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.SysTenantAccountDetail">
+		UPDATE sys_tenant_account_detail
+		<set>
+			<if test="transCashAmount != null">
+				trans_cash_amount_ = #{transCashAmount},
+			</if>
+			<if test="userId != null">
+				user_id_ = #{userId},
+			</if>
+			<if test="id != null">
+				id_ = #{id},
+			</if>
+			<if test="totalAvailableMinutes != null">
+				total_available_minutes_ = #{totalAvailableMinutes},
+			</if>
+			<if test="transType != null">
+				trans_type_ = #{transType},
+			</if>
+			<if test="updateTime != null">
+				update_time_ = #{updateTime},
+			</if>
+			<if test="memo != null">
+				memo_ = #{memo},
+			</if>
+			<if test="transStatus != null">
+				trans_status_ = #{transStatus},
+			</if>
+			<if test="transNo != null">
+				trans_no_ = #{transNo},
+			</if>
+			<if test="transMinutes != null">
+				trans_minutes_ = #{transMinutes},
+			</if>
+			<if test="createTime != null">
+				create_time_ = #{createTime},
+			</if>
+		</set>
+		WHERE id_ = #{id}
+	</update>
+
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete">
+		DELETE FROM sys_tenant_account_detail WHERE
+		id_ = #{id}
+	</delete>
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="SysTenantAccountDetail"
+		parameterType="map">
+		SELECT * FROM sys_tenant_account_detail ORDER BY id_
+		<include refid="global.limit" />
+	</select>
+
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM
+		sys_tenant_account_detail
+	</select>
+</mapper>

+ 46 - 0
mec-biz/src/main/resources/config/mybatis/SysTenantAccountMapper.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
+<mapper namespace="com.ym.mec.biz.dal.dao.SysTenantAccountDao">
+
+	<resultMap type="com.ym.mec.biz.dal.entity.SysTenantAccount"
+		id="SysTenantAccount">
+		<result column="user_id_" property="userId" />
+		<result column="available_minutes_" property="availableMinutes" />
+		<result column="frozen_minutes_" property="frozenMinutes" />
+		<result column="status_" property="status" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+
+
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="SysTenantAccount">
+		SELECT * FROM sys_tenant_account
+	</select>
+
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysTenantAccount"
+		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
+			AS ID FROM DUAL </selectKey> -->
+		INSERT INTO sys_tenant_account
+		(user_id_,available_minutes_,frozen_minutes_,status_,create_time_,update_time_)
+		VALUES(#{userId},#{availableMinutes},#{frozenMinutes},#{status},#{createTime},#{updateTime})
+	</insert>
+
+
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="SysTenantAccount"
+		parameterType="map">
+		SELECT * FROM sys_tenant_account
+		<include refid="global.limit" />
+	</select>
+
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM
+		sys_tenant_account
+	</select>
+</mapper>

+ 3 - 0
mec-client-api/src/main/java/com/ym/mec/im/UserFeignService.java

@@ -12,4 +12,7 @@ public interface UserFeignService {
 
 	@RequestMapping(value = "api/createCashAccount")
 	Boolean createCashAccount(@RequestParam("userId") Integer userId);
+	
+	@RequestMapping(value = "api/queryTeacherOrganId")
+	public Integer queryTeacherOrganId(@RequestParam("userId") Integer userId);
 }

+ 7 - 1
mec-client-api/src/main/java/com/ym/mec/im/fallback/UserFeignServiceFallback.java

@@ -10,4 +10,10 @@ public class UserFeignServiceFallback implements UserFeignService {
 	@Override
 	public Boolean createCashAccount(Integer userId) {
 		return false;
-	}}
+	}
+
+	@Override
+	public Integer queryTeacherOrganId(Integer userId) {
+		return null;
+	}
+}

+ 9 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseGroupController.java

@@ -2,7 +2,9 @@ package com.ym.mec.teacher.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.CourseGroupCreateDto;
+import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.service.CoursesGroupService;
 import com.ym.mec.biz.service.GroupClassService;
@@ -31,6 +33,8 @@ public class CourseGroupController extends BaseController {
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private GroupClassService groupClassService;
+    @Autowired
+    private TeacherDao teacherDao;
 
     @ApiOperation(value = "创建课程组")
     @PostMapping("/createCourseGroup")
@@ -39,6 +43,11 @@ public class CourseGroupController extends BaseController {
         if(Objects.isNull(sysUser)){
             return failed(HttpStatus.FORBIDDEN,"请登录");
         }
+        Teacher teacher = teacherDao.get(sysUser.getId());
+        if(Objects.isNull(teacher)){
+            return failed("教师不存在");
+        }
+        courseGroupCreateInfo.getCoursesGroup().setOrganId(teacher.getOrganId());
         courseGroupCreateInfo.getCoursesGroup().setTeacherId(sysUser.getId());
         coursesGroupService.createCourseGroup(courseGroupCreateInfo);
         return succeed();

+ 20 - 4
mec-web/src/main/java/com/ym/mec/web/controller/APIController.java

@@ -1,15 +1,19 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.service.PracticeLessonApplyService;
-import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
+
 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.RestController;
 
+import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.service.PracticeLessonApplyService;
+import com.ym.mec.common.controller.BaseController;
+
 @RequestMapping("api")
 @Api(tags = "对外接口")
 @RestController
@@ -17,6 +21,9 @@ public class APIController extends BaseController {
 
 	@Autowired
 	private SysUserCashAccountDao sysUserCashAccountDao;
+	
+	@Autowired
+	private TeacherDao teacherDao;
 
 	@Autowired
 	private PracticeLessonApplyService practiceLessonApplyService;
@@ -29,6 +36,15 @@ public class APIController extends BaseController {
 		return true;
 	}
 
+	@GetMapping("/queryTeacherOrganId")
+	public Integer queryTeacherOrganId(Integer userId) {
+		Teacher teacher = teacherDao.get(userId);
+		if (teacher != null) {
+			return teacher.getOrganId();
+		}
+		return null;
+	}
+
 	@GetMapping("/practiceSum")
 	public Object practiceSum() {
 		return succeed(practiceLessonApplyService.practiceSum());