Ver Fonte

Merge remote-tracking branch 'origin/master'

周箭河 há 5 anos atrás
pai
commit
f3bdf98f1c
52 ficheiros alterados com 518 adições e 235 exclusões
  1. 1 1
      cms/src/main/java/com/ym/mec/cms/config/ResourceServerConfig.java
  2. 12 0
      cms/src/main/resources/application.yml
  3. 1 1
      cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  4. 12 0
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUser.java
  5. 7 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDao.java
  6. 7 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java
  7. 7 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java
  8. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/TokenController.java
  9. 12 0
      mec-auth/mec-auth-server/src/main/resources/application.yml
  10. 3 0
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  11. 12 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupTeacherSalaryDao.java
  12. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java
  13. 1 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  14. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupManageDetailDto.java
  15. 4 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentApplyRefunds.java
  16. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  17. 32 32
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupStudentQueryInfo.java
  18. 12 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentApplyrefundsQueryInfo.java
  19. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java
  20. 24 16
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java
  21. 34 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  22. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherLeaveRecordServiceImpl.java
  23. 12 14
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  24. 65 106
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  25. 4 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherSalaryMapper.xml
  26. 3 3
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  27. 4 1
      mec-biz/src/main/resources/config/mybatis/StudentApplyRefundsMapper.xml
  28. 2 4
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  29. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  30. 9 0
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  31. 4 5
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  32. 12 0
      mec-education/src/main/resources/application.yml
  33. 12 0
      mec-eureka/src/main/resources/application.yml
  34. 12 0
      mec-gateway/mec-gateway-web/src/main/resources/application.yml
  35. 12 1
      mec-im/src/main/resources/application.yml
  36. 1 1
      mec-student/src/main/java/com/ym/mec/student/controller/CourseController.java
  37. 12 0
      mec-student/src/main/resources/application.yml
  38. 48 0
      mec-student/src/main/resources/logback-spring.xml
  39. 2 0
      mec-task/src/main/java/com/ym/mec/task/jobs/HomeworkNoReplyRemaindTask.java
  40. 2 0
      mec-task/src/main/java/com/ym/mec/task/jobs/PushNoSignOutMessageTask.java
  41. 2 0
      mec-task/src/main/java/com/ym/mec/task/jobs/StudentCoursesScheduleRemaindTask.java
  42. 2 0
      mec-task/src/main/java/com/ym/mec/task/jobs/StudentHomeworkRemaindTask.java
  43. 2 0
      mec-task/src/main/java/com/ym/mec/task/jobs/StudentSignInRemaindTask.java
  44. 2 0
      mec-task/src/main/java/com/ym/mec/task/jobs/TeacherCoursesScheduleRemaindTask.java
  45. 2 0
      mec-task/src/main/java/com/ym/mec/task/jobs/TeacherSignInRemaindTask.java
  46. 2 0
      mec-task/src/main/java/com/ym/mec/task/jobs/UserAutoUnlockedTask.java
  47. 2 0
      mec-task/src/main/java/com/ym/mec/task/jobs/VipGroupTeacherSalarySettlementTask.java
  48. 12 0
      mec-task/src/main/resources/application.yml
  49. 12 0
      mec-teacher/src/main/resources/application.yml
  50. 8 0
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java
  51. 29 25
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java
  52. 12 0
      mec-web/src/main/resources/application.yml

+ 1 - 1
cms/src/main/java/com/ym/mec/cms/config/ResourceServerConfig.java

@@ -25,7 +25,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 	@Override
 	public void configure(HttpSecurity http) throws Exception {
 		http.authorizeRequests()
-				.antMatchers("/v2/api-docs", "/news/list", "/news/query/*")
+				.antMatchers("/v2/api-docs", "/news/list", "/news/query")
 				.permitAll()
 				// 任何人不登录都可以获取的资源
 				// .antMatchers("/ipController/**").hasIpAddress("127.0.0.1") //特定ip可以不登录获取资源

+ 12 - 0
cms/src/main/resources/application.yml

@@ -1,5 +1,17 @@
 server:
   port: 8006
+  tomcat:
+    accesslog:
+      enabled: true
+      buffered: true
+      directory: /var/logs
+      file-date-format: -yyyy-MM-dd
+      pattern: common
+      prefix: tomcat-cms
+      rename-on-rotate: false
+      request-attributes-enabled: false
+      rotate: true
+      suffix: .log
 
 eureka:
   client:

+ 1 - 1
cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -39,7 +39,7 @@
 	
 	<!-- 根据主键查询一条记录 -->
 	<select id="get" resultMap="SysNewsInformation" >
-		SELECT * FROM sys_news_information WHERE id_ = #{id} WHERE del_flag_=0
+		SELECT * FROM sys_news_information WHERE id_ = #{id} AND del_flag_=0
 	</select>
 	
 	<!-- 全查询 -->

+ 12 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUser.java

@@ -48,6 +48,10 @@ public class SysUser implements Serializable{
 	@ApiModelProperty(value = "部门ID",required = false)
 	private Integer organId;
 
+	/** 部门ID */
+	@ApiModelProperty(value = "部门名称",required = false)
+	private String organName;
+
 	/** 创建时间 */
 	private java.util.Date createTime;
 
@@ -101,6 +105,14 @@ public class SysUser implements Serializable{
 	@ApiModelProperty(value = "是否是超管",required = false)
 	private Boolean isSuperAdmin;
 
+	public String getOrganName() {
+		return organName;
+	}
+
+	public void setOrganName(String organName) {
+		this.organName = organName;
+	}
+
 	public String getRealName() {
 		return realName;
 	}

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

@@ -45,4 +45,11 @@ public interface SysUserDao extends BaseDAO<Integer, SysUser> {
 	 * @return
 	 */
 	List<SysUser> queryByStatus(UserLockFlag status);
+
+	/**
+	 * 获取机构名称
+	 * @param organId
+	 * @return
+	 */
+    String getOrganName(Integer organId);
 }

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

@@ -68,4 +68,11 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
 	 * @param sysUser
 	 */
     void updateBaseInfo(SysUser sysUser);
+
+	/**
+	 * 获取用户基本信息
+	 * @param userId
+	 * @return
+	 */
+	SysUser queryUserInfo(Integer userId);
 }

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

@@ -128,4 +128,11 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		imFeignService.update(new ImUserModel(sysUser.getId().toString(),sysUser.getUsername(),sysUser.getAvatar()));
 	}
 
+	@Override
+	public SysUser queryUserInfo(Integer userId) {
+		SysUser sysUser = sysUserDao.get(userId);
+		sysUser.setOrganName(sysUserDao.getOrganName(sysUser.getOrganId()));
+		return sysUser;
+	}
+
 }

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/TokenController.java

@@ -68,7 +68,7 @@ public class TokenController extends BaseController {
     public Object apiQueryUserInfo() {
 		AuthUser authUser = SecurityUtils.getUser();
 		if(authUser != null){
-			return succeed(userService.get(authUser.getUserId()));
+			return succeed(userService.queryUserInfo(authUser.getUserId()));
 		}
 		return failed("获取用户信息失败");
     }

+ 12 - 0
mec-auth/mec-auth-server/src/main/resources/application.yml

@@ -1,5 +1,17 @@
 server:
   port: 8001
+  tomcat:
+    accesslog:
+      enabled: true
+      buffered: true
+      directory: /var/logs
+      file-date-format: -yyyy-MM-dd
+      pattern: common
+      prefix: tomcat-auth
+      rename-on-rotate: false
+      request-attributes-enabled: false
+      rotate: true
+      suffix: .log
 
 eureka:
   client:

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

@@ -183,4 +183,7 @@
     <select id="queryByStatus" resultMap="SysUser">
         select * from sys_user where lock_flag_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
     </select>
+    <select id="getOrganName" resultType="java.lang.String">
+        SELECT name_ FROM organization WHERE id_ = #{organId}
+    </select>
 </mapper>

+ 12 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupTeacherSalaryDao.java

@@ -15,4 +15,15 @@ public interface ClassGroupTeacherSalaryDao extends BaseDAO<Long, ClassGroupTeac
      * @return
      */
     List<ClassGroupTeacherSalary> findByMusicGroupId(@Param("musicGroupId") String musicGroupId);
-}
+
+    /**
+     * @describe 获取班级与老师课酬
+     * @author Joburgess
+     * @date 2019/11/11
+     * @param vipGroupId: vip课编号
+     * @param teacherId: 老师编号
+     * @return com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary
+     */
+    ClassGroupTeacherSalary findByVipGoupAndTeacher(@Param("vipGroupId") Integer vipGroupId,
+                                                    @Param("teacherId") Integer teacherId);
+}

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

@@ -91,4 +91,12 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
                                              @Param("date") Date date,
                                              @Param("signInStatus") Integer signInStatus);
 
+    /**
+     * @describe
+     * @author Joburgess
+     * @date 2019/11/11
+     * @param courseScheduleIds: 课程编号列表
+     * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
+     */
+    List<TeacherAttendance> findTeacherIdByCourseSchedule(@Param("courseScheduleIds") List<Long> courseScheduleIds);
 }

+ 1 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -122,10 +122,9 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
     /**
      * 根据教师编号列表,和班级编号列表获取教师签到次数
      * @param teacherIdStr
-     * @param classGroupIdStr
      * @return
      */
-    List<Map<Integer, Integer>> findSignNum(@Param("teacherIdStr") String teacherIdStr,@Param("classGroupIdStr") String classGroupIdStr);
+    List<Map<Integer, Integer>> findSignNum(@Param("teacherIdStr") String teacherIdStr,@Param("musicGroupId") String musicGroupId);
 
     /**
      * 获取教师乐团上课记录(乐团管理--乐团详情)

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupManageDetailDto.java

@@ -4,6 +4,7 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.VipGroup;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -33,6 +34,26 @@ public class VipGroupManageDetailDto extends VipGroup {
     @ApiModelProperty(value = "教学点名称")
     private String teacherSchoolName;
 
+    private BigDecimal onlineTeacherSalary;
+
+    private BigDecimal offlineTeacherSalary;
+
+    public BigDecimal getOnlineTeacherSalary() {
+        return onlineTeacherSalary;
+    }
+
+    public void setOnlineTeacherSalary(BigDecimal onlineTeacherSalary) {
+        this.onlineTeacherSalary = onlineTeacherSalary;
+    }
+
+    public BigDecimal getOfflineTeacherSalary() {
+        return offlineTeacherSalary;
+    }
+
+    public void setOfflineTeacherSalary(BigDecimal offlineTeacherSalary) {
+        this.offlineTeacherSalary = offlineTeacherSalary;
+    }
+
     public String getTeacherSchoolName() {
         return teacherSchoolName;
     }

+ 4 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentApplyRefunds.java

@@ -1,13 +1,11 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.common.enums.BaseEnum;
 import io.swagger.annotations.ApiModelProperty;
-
-import java.math.BigDecimal;
-
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.common.enums.BaseEnum;
+import java.math.BigDecimal;
 
 /**
  * 对应数据库表(student_apply_refunds):
@@ -70,7 +68,7 @@ public class StudentApplyRefunds {
 	private StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
 	
 	private SysUser user = new SysUser();
-	
+
 	public void setId(Long id){
 		this.id = id;
 	}

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

@@ -99,7 +99,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     BACKSTAGE_STUDENT_APPEAL("BACKSTAGE_STUDENT_APPEAL", "学员申述"),
     BACKSTAGE_STUDENT_APPLY_QUIT_GROUP("BACKSTAGE_STUDENT_APPLY_QUIT_GROUP", "学员申请退团"),
     BACKSTAGE_STUDENT_APPLY_QUIT_COURSE("BACKSTAGE_STUDENT_APPLY_QUIT_COURSE", "学员申请退课"),
-    BACKSTAGE_STUDENT_APPLY_WITHDRAW("BACKSTAGE_STUDNET_APPLY_WITHDRAW", "学员申请提现");
+    BACKSTAGE_STUDENT_APPLY_WITHDRAW("BACKSTAGE_STUDENT_APPLY_WITHDRAW", "学员申请提现");
 
     MessageTypeEnum(String code, String msg) {
         this.code = code;

+ 32 - 32
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupStudentQueryInfo.java

@@ -5,47 +5,47 @@ import io.swagger.annotations.ApiModelProperty;
 
 public class MusicGroupStudentQueryInfo extends QueryInfo {
 
-    @ApiModelProperty(value = "科目编号")
-    private Integer subjectId;
+  @ApiModelProperty(value = "科目编号")
+  private Integer subjectId;
 
-    @ApiModelProperty(value = "乐团编号")
-    private String musicGroupId;
+  @ApiModelProperty(value = "乐团编号")
+  private String musicGroupId;
 
-    @ApiModelProperty(value = "学员状态 NORMAL(NORMAL, 在读), LEAVE(LEAVE, 请假), QUIT(QUIT, 退班)",required = false)
-    private String studentStatus;
+  @ApiModelProperty(value = "学员状态 NORMAL(NORMAL, 在读), LEAVE(LEAVE, 请假), QUIT(QUIT, 退班)",required = false)
+  private Integer studentStatus;
 
-    @ApiModelProperty(value = "缴费状态  PAID_COMPLETED(完成缴费), NON_PAYMENT(未缴费), PROCESSING(缴费中)",required = false)
-    private String paymentStatus;
+  @ApiModelProperty(value = "缴费状态  PAID_COMPLETED(完成缴费), NON_PAYMENT(未缴费), PROCESSING(缴费中)",required = false)
+  private Integer paymentStatus;
 
-    public String getMusicGroupId() {
-        return musicGroupId;
-    }
+  public String getMusicGroupId() {
+    return musicGroupId;
+  }
 
-    public void setMusicGroupId(String musicGroupId) {
-        this.musicGroupId = musicGroupId;
-    }
+  public void setMusicGroupId(String musicGroupId) {
+    this.musicGroupId = musicGroupId;
+  }
 
-    public Integer getSubjectId() {
-        return subjectId;
-    }
+  public Integer getSubjectId() {
+    return subjectId;
+  }
 
-    public void setSubjectId(Integer subjectId) {
-        this.subjectId = subjectId;
-    }
+  public void setSubjectId(Integer subjectId) {
+    this.subjectId = subjectId;
+  }
 
-    public String getStudentStatus() {
-        return studentStatus;
-    }
+  public Integer getStudentStatus() {
+    return studentStatus;
+  }
 
-    public void setStudentStatus(String studentStatus) {
-        this.studentStatus = studentStatus;
-    }
+  public void setStudentStatus(Integer studentStatus) {
+    this.studentStatus = studentStatus;
+  }
 
-    public String getPaymentStatus() {
-        return paymentStatus;
-    }
+  public Integer getPaymentStatus() {
+    return paymentStatus;
+  }
 
-    public void setPaymentStatus(String paymentStatus) {
-        this.paymentStatus = paymentStatus;
-    }
+  public void setPaymentStatus(Integer paymentStatus) {
+    this.paymentStatus = paymentStatus;
+  }
 }

+ 12 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentApplyrefundsQueryInfo.java

@@ -1,15 +1,25 @@
 package com.ym.mec.biz.dal.page;
 
-import java.util.Date;
-
 import com.ym.mec.common.page.QueryInfo;
 
+import java.util.Date;
+
 public class StudentApplyrefundsQueryInfo extends QueryInfo {
 
 	private Date startTime;
 
 	private Date endTime;
 
+	private String status;
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
 	public Date getStartTime() {
 		return startTime;
 	}

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

@@ -117,7 +117,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
      * @param queryInfo
      * @return
      */
-    PageInfo<MusicGroupTeachersDto> queryMusicGroupTeachers(QueryInfo queryInfo);
+    PageInfo<MusicGroupTeachersDto> queryMusicGroupTeachers(MusicGroupTeachersQueryInfo queryInfo);
 
     /**
      * 获取教师上课记录列表(乐团管理--乐团详情)

+ 24 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -1,29 +1,19 @@
 package com.ym.mec.biz.service;
 
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-
-import com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto;
-import com.ym.mec.biz.dal.dto.TeachingRecordBaseInfo;
-import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
-import com.ym.mec.biz.dal.dto.VipGroupBuyParamsDto;
-import com.ym.mec.biz.dal.dto.VipGroupCostCountDto;
-import com.ym.mec.biz.dal.dto.VipGroupCostCountParamsDto;
-import com.ym.mec.biz.dal.dto.VipGroupManageDetailDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.School;
 import com.ym.mec.biz.dal.entity.StudentApplyRefunds.StudentApplyRefundsStatus;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
-import com.ym.mec.biz.dal.page.StudentVipGroupQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupSalaryQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupTeachingRecordQueryInfo;
+import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
 public interface VipGroupService extends BaseService<Long, VipGroup> {
 
     /**
@@ -45,6 +35,15 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
     void updateVipGroup(VipGroupApplyDto vipGroupApplyInfo);
 
     /**
+     * @describe 新增vip课程计划
+     * @author Joburgess
+     * @date 2019/11/11
+     * @param vipGroupApplyDto:
+     * @return void
+     */
+    void appendVipGroupCourseSchedules(VipGroupApplyDto vipGroupApplyDto);
+
+    /**
      * @describe vip课程审核
      * @author Joburgess
      * @date 2019/10/22
@@ -240,5 +239,14 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      * @return
      */
     List<School> querySchoolByUserId(Integer userId);
+
+    /**
+     * @describe 更新vip课基本信息
+     * @author Joburgess
+     * @date 2019/11/11
+     * @param vipGroupApplyBaseInfo:
+     * @return void
+     */
+    void updateVipGroupBaseInfo(VipGroupApplyBaseInfoDto vipGroupApplyBaseInfo);
     
 }

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

@@ -124,9 +124,23 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     @Transactional(rollbackFor = Exception.class)
     public void batchInsert(List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries) {
         courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
+        List<Long> courseScheduleIds = courseScheduleTeacherSalaries.stream()
+                .map(CourseScheduleTeacherSalary::getCourseScheduleId)
+                .collect(Collectors.toList());
+        List<TeacherAttendance> teacherIdByCourseSchedule = teacherAttendanceDao.findTeacherIdByCourseSchedule(courseScheduleIds);
+        Map<Long, List<TeacherAttendance>> courseScheduleTeacherAttendanceMap = teacherIdByCourseSchedule.stream()
+                .collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));
         List<TeacherAttendance> teacherAttendances=new ArrayList<>();
         courseScheduleTeacherSalaries.forEach(courseScheduleTeacherSalary -> {
-            teacherAttendances.add(new TeacherAttendance(courseScheduleTeacherSalary.getUserId(),courseScheduleTeacherSalary.getCourseScheduleId()));
+            List<TeacherAttendance> teacherAttendancesTemp=courseScheduleTeacherAttendanceMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
+
+            List<Integer> collect = new ArrayList<>();
+            if(!CollectionUtils.isEmpty(teacherAttendancesTemp)){
+                teacherAttendancesTemp.stream().map(TeacherAttendance::getTeacherId).collect(Collectors.toList());
+            }
+            if(CollectionUtils.isEmpty(collect)||!collect.contains(courseScheduleTeacherSalary.getUserId())){
+                teacherAttendances.add(new TeacherAttendance(courseScheduleTeacherSalary.getUserId(),courseScheduleTeacherSalary.getCourseScheduleId()));
+            }
         });
         teacherAttendanceDao.batchInsert(teacherAttendances);
     }
@@ -199,7 +213,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             //教师应扣除费用
             BigDecimal deductPrice = avgSalary.multiply(teacherLiabilityAllratio);
             //教师实际课酬
-            BigDecimal actualSalary = expectSalary.subtract(deductPrice).add(courseScheduleTeacherSalary.getSubsidy());
+            BigDecimal schoolSubsidy=new BigDecimal(0);
+            if(Objects.nonNull(courseScheduleTeacherSalary.getSubsidy())){
+                schoolSubsidy=courseScheduleTeacherSalary.getSubsidy();
+            }
+            BigDecimal actualSalary = expectSalary.subtract(deductPrice).add(schoolSubsidy);
 
             //更新教师结算信息
             courseScheduleTeacherSalary.setActualSalary(actualSalary);
@@ -221,16 +239,25 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             userCashAccountDetails.add(teacherCashAccountDetail);
 
             //根据学生进行投诉分组
-            Map<Integer, List<CourseScheduleComplaints>> complainsGroupByStudent = courseStudentComplaints.stream().collect(Collectors.groupingBy(CourseScheduleComplaints::getUserId));
+            Map<Integer, List<CourseScheduleComplaints>> complainsGroupByStudent = null;
+            if(Objects.nonNull(courseStudentComplaints)){
+                complainsGroupByStudent = courseStudentComplaints.stream().collect(Collectors.groupingBy(CourseScheduleComplaints::getUserId));
+            }
 
             //计算学生当前课程应缴费用
-            studentPaymentsWithCourse.forEach(studentPayment -> {
+            for (CourseScheduleStudentPayment studentPayment : studentPaymentsWithCourse) {
                 //当前课程学生应缴费用
                 BigDecimal studentExpectPrice = studentPayment.getExpectPrice();
+                if(Objects.isNull(studentExpectPrice)){
+                    studentExpectPrice=new BigDecimal(0);
+                }
                 //当前课程学生责任占比
                 BigDecimal studentLiabilityRatio;
-                List<CourseScheduleComplaints> currentCourseScheduleComplaints = complainsGroupByStudent.get(studentPayment.getUserId());
-                if (CollectionUtils.isEmpty(currentCourseScheduleComplaints)) {
+                List<CourseScheduleComplaints> currentCourseScheduleComplaints = null;
+                if(!CollectionUtils.isEmpty(complainsGroupByStudent)){
+                    currentCourseScheduleComplaints = complainsGroupByStudent.get(studentPayment.getUserId());
+                }
+                if (!CollectionUtils.isEmpty(currentCourseScheduleComplaints)) {
                     Double temp = currentCourseScheduleComplaints.get(0).getStudentLiabilityRatio();
                     studentLiabilityRatio = new BigDecimal(temp);
                 } else {
@@ -259,8 +286,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 studentAccountDetail.setAttribute(courseScheduleTeacherSalary.getCourseScheduleId().toString());
 
                 userCashAccountDetails.add(studentAccountDetail);
-
-            });
+            }
 
         });
         sysUserCashAccountDetailDao.batchInsert(userCashAccountDetails);

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

@@ -109,7 +109,7 @@ public class TeacherLeaveRecordServiceImpl extends BaseServiceImpl<Long, Teacher
 
 		teacherLeaveRecordDao.update(teacherLeaveRecord);
 
-		if (StringUtils.isNotBlank(teacherLeaveRecord.getCoursesScheduleJson())) {
+		if (StringUtils.isNotBlank(teacherLeaveRecord.getCoursesScheduleJson())&&status==AuditStatusEnum.PASS) {
 			List<CoursesScheduleHistory> coursesScheduleHistoryList = JsonUtil.parseArray(teacherLeaveRecord.getCoursesScheduleJson(),
 					CoursesScheduleHistory.class);
 

+ 12 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.SysUserType;
@@ -7,10 +8,7 @@ import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.page.MusicGroupTeacherAttendanceQueryInfo;
-import com.ym.mec.biz.dal.page.TeacherCloseQueryInfo;
-import com.ym.mec.biz.dal.page.TeacherQueryInfo;
-import com.ym.mec.biz.dal.page.queryMusicGroupStudentQueryInfo;
+import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupModel;
@@ -231,7 +229,7 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	}
 
 	@Override
-	public PageInfo<MusicGroupTeachersDto> queryMusicGroupTeachers(QueryInfo queryInfo) {
+	public PageInfo<MusicGroupTeachersDto> queryMusicGroupTeachers(MusicGroupTeachersQueryInfo queryInfo) {
 		PageInfo<MusicGroupTeachersDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
@@ -243,22 +241,22 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 			params.put("offset", pageInfo.getOffset());
 			dataList = teacherDao.queryMusicGroupTeachers(params);
 			//获取合奏班id列表
-			Set<Integer> classGroupIds = dataList.stream().map(e -> e.getClassGroupId()).collect(Collectors.toSet());
-			String classGroupIdStr = StringUtils.join(classGroupIds,",");
+//			Set<Integer> classGroupIds = dataList.stream().map(e -> e.getClassGroupId()).collect(Collectors.toSet());
+//			String classGroupIdStr = StringUtils.join(classGroupIds,",");
 			//获取教师id列表
-			Set<Integer> teacherIds = dataList.stream().map(e -> e.getClassGroupId()).collect(Collectors.toSet());
-			String teacherIdStr = StringUtils.join(teacherIds,",");
+			Set<Integer> teacherIds = dataList.stream().map(e -> e.getTeacherId()).collect(Collectors.toSet());
+//			String teacherIdStr = StringUtils.join(teacherIds,",");
 
 			//根据教师编号和班级编号,获取老师签到次数
-			List<Map<Integer,Integer>> signNum =  teacherDao.findSignNum(teacherIdStr,classGroupIdStr);
-			Map<Integer,Integer> signNumMap = MapUtil.convertMybatisMap(signNum);
+			Map<Integer,Integer> signNumMap =  JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(teacherDao.findSignNum(StringUtils.join(teacherIds,","),queryInfo.getMusicGroupId()))),HashMap.class);
+//			Map<Integer,Integer> signNumMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(signNum)),HashMap.class);
 
 			//根据合奏班编号,获取子班级名称列表
-			List<Map<Integer,String>> classNames =  classGroupDao.queryNamesByClassId(classGroupIdStr);
-			Map<Integer,String> classNameMap = MapUtil.convertMybatisMap(classNames);
+//			List<Map<Integer,String>> classNames =  classGroupDao.queryNamesByClassId(classGroupIdStr);
+//			Map<Integer,String> classNameMap = MapUtil.convertMybatisMap(classNames);
 
 			dataList.forEach(e->{
-				e.setCourseScheduleName(classNameMap.get(e.getClassGroupId()));
+//				e.setCourseScheduleName(classNameMap.get(e.getClassGroupId()));
 				e.setNum(signNumMap.get(e.getTeacherId()));
 			});
 		}

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

@@ -1,106 +1,16 @@
 package com.ym.mec.biz.service.impl;
 
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
-
 import com.alibaba.fastjson.JSON;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
-import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
-import com.ym.mec.biz.dal.dao.ClassGroupTeacherSalaryDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
-import com.ym.mec.biz.dal.dao.StudentApplyRefundsDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
-import com.ym.mec.biz.dal.dao.SubjectDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDetailDao;
-import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.dao.TeacherDefaultVipGroupSalaryDao;
-import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
-import com.ym.mec.biz.dal.dao.VipGroupCategoryDao;
-import com.ym.mec.biz.dal.dao.VipGroupClassGroupMapperDao;
-import com.ym.mec.biz.dal.dao.VipGroupDao;
-import com.ym.mec.biz.dal.dao.VipGroupDefaultClassesCycleDao;
-import com.ym.mec.biz.dal.dao.VipGroupDefaultClassesUnitPriceDao;
-import com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto;
-import com.ym.mec.biz.dal.dto.TeachingRecordBaseInfo;
-import com.ym.mec.biz.dal.dto.VipGroupApplyBaseInfoDto;
-import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
-import com.ym.mec.biz.dal.dto.VipGroupBuyParamsDto;
-import com.ym.mec.biz.dal.dto.VipGroupCostCountDto;
-import com.ym.mec.biz.dal.dto.VipGroupCostCountParamsDto;
-import com.ym.mec.biz.dal.dto.VipGroupManageDetailDto;
-import com.ym.mec.biz.dal.dto.VipGroupSalaryBaseInfo;
-import com.ym.mec.biz.dal.dto.VipGroupSalaryDto;
-import com.ym.mec.biz.dal.dto.VipGroupSalarySettlementDto;
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
-import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
-import com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
-import com.ym.mec.biz.dal.entity.School;
-import com.ym.mec.biz.dal.entity.StudentApplyRefunds;
 import com.ym.mec.biz.dal.entity.StudentApplyRefunds.StudentApplyRefundsStatus;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
-import com.ym.mec.biz.dal.entity.Teacher;
-import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary;
-import com.ym.mec.biz.dal.entity.VipGroup;
-import com.ym.mec.biz.dal.entity.VipGroupActivity;
-import com.ym.mec.biz.dal.entity.VipGroupCategory;
-import com.ym.mec.biz.dal.entity.VipGroupClassGroupMapper;
-import com.ym.mec.biz.dal.entity.VipGroupDefaultClassesCycle;
-import com.ym.mec.biz.dal.entity.VipGroupDefaultClassesUnitPrice;
-import com.ym.mec.biz.dal.enums.AuditStatusEnum;
-import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
-import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.MessageTypeEnum;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.TeachModeEnum;
-import com.ym.mec.biz.dal.enums.TeachTypeEnum;
-import com.ym.mec.biz.dal.enums.VipGroupStatusEnum;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
-import com.ym.mec.biz.dal.page.StudentVipGroupQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupSalaryQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupTeachingRecordQueryInfo;
-import com.ym.mec.biz.service.ContractService;
-import com.ym.mec.biz.service.CourseScheduleRewardsRulesService;
-import com.ym.mec.biz.service.CourseScheduleService;
-import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
-import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
-import com.ym.mec.biz.service.PayService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysMessageService;
-import com.ym.mec.biz.service.SysUserCashAccountDetailService;
-import com.ym.mec.biz.service.SysUserCashAccountService;
-import com.ym.mec.biz.service.VipGroupService;
+import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupModel;
@@ -111,6 +21,16 @@ import com.ym.mec.im.ImFeignService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> implements VipGroupService {
@@ -360,17 +280,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	@Transactional(rollbackFor = Exception.class)
 	public void updateVipGroup(VipGroupApplyDto vipGroupApplyInfo) {
 		VipGroupApplyBaseInfoDto vipGroupUpdateInfo = vipGroupApplyInfo.getVipGroupApplyBaseInfo();
-		if(Objects.isNull(vipGroupUpdateInfo.getId())){
-			throw new BizException("请指定vip课");
-		}
-		VipGroup oldVipGroupInfo = vipGroupDao.get(vipGroupUpdateInfo.getId());
-		if(Objects.isNull(oldVipGroupInfo)){
-			throw new BizException("指定的vip课不存在");
-		}
-		Date now=new Date();
 		//更新vip课
-		vipGroupUpdateInfo.setUpdateTime(now);
-		vipGroupDao.update(vipGroupUpdateInfo);
+		updateVipGroupBaseInfo(vipGroupUpdateInfo);
 
 		//课程调整
 		List<CourseSchedule> courseSchedules = vipGroupApplyInfo.getCourseSchedules();
@@ -579,6 +490,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		}
 		VipGroupManageDetailDto vipGroupBaseInfo = vipGroupDao.getVipGroupBaseInfo(vipGroupId);
 		vipGroupBaseInfo.setSubjectName(StringUtils.join(subjectDao.findBySubIds(vipGroupBaseInfo.getSubjectIdList()),","));
+		ClassGroupTeacherSalary byVipGoupAndTeacher = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroupId.intValue(), vipGroupBaseInfo.getUserId());
+		vipGroupBaseInfo.setOnlineTeacherSalary(byVipGoupAndTeacher.getOnlineClassesSalary());
+		vipGroupBaseInfo.setOfflineTeacherSalary(byVipGoupAndTeacher.getSalary());
 		return vipGroupBaseInfo;
 	}
 
@@ -1254,4 +1168,49 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	public List<School> querySchoolByUserId(Integer userId) {
 		return vipGroupDao.querySchoolByUserId(userId);
 	}
+
+	@Override
+	public void updateVipGroupBaseInfo(VipGroupApplyBaseInfoDto vipGroupApplyBaseInfo) {
+		if(Objects.isNull(vipGroupApplyBaseInfo.getId())){
+			throw new BizException("请指定vip课");
+		}
+		VipGroup oldVipGroupInfo = vipGroupDao.get(vipGroupApplyBaseInfo.getId());
+		if(Objects.isNull(oldVipGroupInfo)){
+			throw new BizException("指定的vip课不存在");
+		}
+		Date now=new Date();
+		//更新vip课
+		vipGroupApplyBaseInfo.setUpdateTime(now);
+		vipGroupDao.update(vipGroupApplyBaseInfo);
+	}
+
+	@Override
+	public void appendVipGroupCourseSchedules(VipGroupApplyDto vipGroupApplyDto) {
+		if(Objects.isNull(vipGroupApplyDto.getVipGroupApplyBaseInfo().getId())){
+			throw new BizException("请指定vip课");
+		}
+		VipGroup vipGroup = vipGroupDao.get(vipGroupApplyDto.getVipGroupApplyBaseInfo().getId());
+		if(Objects.isNull(vipGroup)){
+			throw new BizException("指定的vip课不存在");
+		}
+		VipGroupClassGroupMapper vipGroupClassGroupMapper = vipGroupClassGroupMapperDao.findByVipGroupId(vipGroup.getId());
+		//课程信息调整
+		vipGroupApplyDto.getCourseSchedules().forEach(courseSchedule -> {
+			courseSchedule.setSchoolId(vipGroup.getTeacherSchoolId());
+			courseSchedule.setTeacherId(vipGroup.getUserId());
+			courseSchedule.setActualTeacherId(vipGroup.getUserId());
+			courseSchedule.setStatus(CourseStatusEnum.NOT_START);
+			courseSchedule.setType(CourseSchedule.CourseScheduleType.VIP);
+			courseSchedule.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
+		});
+		courseScheduleService.batchAddCourseSchedule(vipGroupApplyDto.getCourseSchedules());
+
+		TeacherDefaultVipGroupSalary byTeacherAndCategory = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId(), vipGroup.getVipGroupCategoryId());
+
+		//创建老师单节课课酬信息
+		courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(vipGroup,
+				vipGroupApplyDto.getCourseSchedules(),
+				byTeacherAndCategory.getOnlineClassesSalary(),
+				byTeacherAndCategory.getOfflineClassesSalary());
+	}
 }

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

@@ -121,5 +121,8 @@
   <select id="findByMusicGroupId" resultMap="ClassGroupTeacherSalary">
     SELECT * FROM class_group_teacher_salary WHERE music_group_id_ = #{musicGroupId}
   </select>
+  <select id="findByVipGoupAndTeacher" resultMap="ClassGroupTeacherSalary">
+    SELECT * FROM class_group_teacher_salary WHERE music_group_id_ = #{vipGroupId} AND user_id_=#{teacherId}
+  </select>
 
-</mapper>
+</mapper>

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

@@ -109,10 +109,10 @@
     <insert id="batchAddCourseSchedules" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
         INSERT INTO course_schedule
-        (id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_,teach_mode_,student_num_,leave_student_num_,schoole_id_)
+        (class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_,teach_mode_,student_num_,leave_student_num_,schoole_id_)
         VALUE
         <foreach collection="list" item="course" separator=",">
-            (#{course.id},#{course.classGroupId},#{course.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.subsidy},#{course.classDate},#{course.startClassTime},#{course.endClassTime},#{course.teacherId},#{course.teacherId},now(),now(),#{course.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.name},#{course.teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.studentNum},#{course.leaveStudentNum},#{course.schoolId})
+            (#{course.classGroupId},#{course.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.subsidy},#{course.classDate},#{course.startClassTime},#{course.endClassTime},#{course.teacherId},#{course.teacherId},now(),now(),#{course.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.name},#{course.teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.studentNum},#{course.leaveStudentNum},#{course.schoolId})
         </foreach>
     </insert>
 
@@ -856,7 +856,7 @@
                     leave_student_num_ = #{item.leaveStudentNum},
                 </if>
                 <if test="item.schoolId != null">
-                    school_id_ = #{item.choolId},
+                    school_id_ = #{item.schoolId},
                 </if>
             </set>
             WHERE id_ = #{item.id}

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

@@ -22,7 +22,7 @@
     <resultMap type="com.ym.mec.biz.dal.entity.StudentApplyRefunds" extends="StudentApplyRefunds" id="StudentApplyRefundsListDTO">
     	<result column="spo.expect_amount_" property="studentPaymentOrder.expectAmount"/>
     	<result column="spo.actual_amount_" property="studentPaymentOrder.actualAmount"/>
-    	<result column="u.username_" property="user.username"/>
+    	<result column="username_" property="user.username"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -95,6 +95,9 @@
         <if test="endTime != null">
             and sar.create_time_ &lt;= #{endTime}
         </if>
+        <if test="status!=null and status!=''">
+            and status_=#{status}
+        </if>
         ORDER BY sar.id_ <include refid="global.limit"/>
     </select>
 

+ 2 - 4
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -356,7 +356,7 @@
                 AND sr.music_group_status_ = #{studentStatus}
             </if>
             <if test="paymentStatus != null">
-                AND mgsf.payment_status_ = #{paymentStatus}
+                AND sr.payment_status_ = #{paymentStatus}
             </if>
             <if test="musicGroupId != null and musicGroupId != ''">
                 AND sr.music_group_id_ = #{musicGroupId}
@@ -378,12 +378,11 @@
     </resultMap>
     <select id="queryMusicGroupStudent" resultMap="MusicGroupStudentsDto">
         SELECT sr.user_id_,su.username_ real_name_,su.gender_,sr.parents_phone_,sr.current_grade_,
-        sr.current_class_,sr.music_group_status_,IF(mgsf.payment_status_ IS NULL,'NON_PAYMENT',mgsf.payment_status_) payment_status_,
+        sr.current_class_,sr.music_group_status_,sr.payment_status_,
         s.name_ subject_name_,sr.music_group_id_,
         IF(sr.create_time_ > mg.payment_expire_date_,1,0) is_new_student_
         FROM student_registration sr
         LEFT JOIN sys_user su ON sr.user_id_ = su.id_
-        LEFT JOIN music_group_student_fee_ mgsf ON (mgsf.music_group_id_ = sr.music_group_id_ AND mgsf.user_id_ = sr.user_id_)
         LEFT JOIN `subject` s ON s.id_ = sr.actual_subject_id_
         LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
         <include refid="queryMusicGroupStudentSql"/>
@@ -394,7 +393,6 @@
         SELECT COUNT(sr.user_id_)
         FROM student_registration sr
         LEFT JOIN sys_user su ON sr.user_id_ = su.id_
-        LEFT JOIN music_group_student_fee_ mgsf ON (mgsf.music_group_id_ = sr.music_group_id_ AND mgsf.user_id_ = sr.user_id_)
         LEFT JOIN `subject` s ON s.id_ = sr.actual_subject_id_
         <include refid="queryMusicGroupStudentSql"/>
     </select>

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

@@ -268,7 +268,7 @@
 
     <select id="countPayNum" resultType="map">
         SELECT COUNT(DISTINCT user_id_) `value`,subject_id_ `key` FROM student_registration
-        WHERE music_group_id_ = #{musicGroupId} AND payment_status_ = 1 GROUP BY subject_id_
+        WHERE music_group_id_ = #{musicGroupId} AND payment_status_ = 2 GROUP BY subject_id_
     </select>
 
     <resultMap id="queryFeeDetailMap" type="com.ym.mec.biz.dal.dto.StudentFeeDetailDto">

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

@@ -255,4 +255,13 @@
     <select id="queryNoSignOutListByOverMinutes" resultMap="Mapper">
         SELECT ta.teacher_id_ key_,u.real_name_ value_ FROM course_schedule cs right join teacher_attendance ta on ta.course_schedule_id_ = cs.id_ left join sys_user u on ta.teacher_id_ = u.id_ WHERE ta.sign_out_status_ = 0 and date(cs.class_date_) = date(now()) and SUBTIME(cs.end_class_time_, CONCAT(#{minutes},'00')) &lt; CURRENT_TIME()
     </select>
+    <select id="findTeacherIdByCourseSchedule" resultMap="TeacherAttendance">
+        SELECT
+          *
+        FROM teacher_attendance
+        WHERE course_schedule_id_ IN
+        <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+            #{courseScheduleId}
+        </foreach>
+    </select>
 </mapper>

+ 4 - 5
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -326,13 +326,13 @@
         <result property="teacherId" column="teacher_id_"/>
     </resultMap>
     <select id="queryMusicGroupTeachers" resultMap="MusicGroupTeachersDto">
-        SELECT su.real_name_,su.phone_,t.job_nature_,GROUP_CONCAT(cg.name_) class_group_name_,cgtm.class_group_id_,t.id_ teacher_id_
+        SELECT su.real_name_,su.phone_,t.job_nature_,GROUP_CONCAT(cg.name_) class_group_name_,t.id_ teacher_id_
         FROM teacher t
         LEFT JOIN class_group_teacher_mapper cgtm ON t.id_ = cgtm.user_id_
         LEFT JOIN class_group cg ON cg.id_ = cgtm.class_group_id_
         LEFT JOIN sys_user su ON t.id_ = su.id_
         <include refid="queryMusicGroupTeachersSql"/>
-        GROUP BY t.id_,cgtm.class_group_id_
+        GROUP BY t.id_
         <include refid="global.limit"/>
     </select>
     <select id="countMusicGroupTeachers" resultType="java.lang.Integer">
@@ -345,7 +345,6 @@
     </select>
     <sql id="queryMusicGroupTeachersSql">
         <where>
-                cg.type_ = 'MIX'
             <if test="search != null and search != ''">
                 AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
             </if>
@@ -360,8 +359,8 @@
 
     <select id="findSignNum" resultType="java.util.Map">
         SELECT ta.teacher_id_ 'key',COUNT(ta.id_) 'value' FROM teacher_attendance ta
-        WHERE FIND_IN_SET(ta.teacher_id_,#{teacherIdStr}) AND FIND_IN_SET(ta.class_group_id_,#{classGroupIdStr})
-        GROUP BY ta.teacher_id_,ta.class_group_id_
+        WHERE FIND_IN_SET(ta.teacher_id_,#{teacherIdStr}) AND ta.music_group_id_ = #{musicGroupId}
+        GROUP BY ta.teacher_id_
     </select>
 
     <sql id="queryTeacherAttendanceSql">

+ 12 - 0
mec-education/src/main/resources/application.yml

@@ -1,5 +1,17 @@
 server:
   port: 9003
+  tomcat:
+    accesslog:
+      enabled: true
+      buffered: true
+      directory: /var/logs
+      file-date-format: -yyyy-MM-dd
+      pattern: common
+      prefix: tomcat-education
+      rename-on-rotate: false
+      request-attributes-enabled: false
+      rotate: true
+      suffix: .log
 
 eureka:
   client:

+ 12 - 0
mec-eureka/src/main/resources/application.yml

@@ -1,5 +1,17 @@
 server:
   port: ${EUREKA_PORT:8761}
+  tomcat:
+    accesslog:
+      enabled: true
+      buffered: true
+      directory: /var/logs
+      file-date-format: -yyyy-MM-dd
+      pattern: common
+      prefix: tomcat-eureka
+      rename-on-rotate: false
+      request-attributes-enabled: false
+      rotate: true
+      suffix: .log
   servlet:
     contextPath: /eureka
 

+ 12 - 0
mec-gateway/mec-gateway-web/src/main/resources/application.yml

@@ -1,5 +1,17 @@
 server:
   port: 8000
+  tomcat:
+    accesslog:
+      enabled: true
+      buffered: true
+      directory: /var/logs
+      file-date-format: -yyyy-MM-dd
+      pattern: common
+      prefix: tomcat-gateway
+      rename-on-rotate: false
+      request-attributes-enabled: false
+      rotate: true
+      suffix: .log
   
 spring:
   application:

+ 12 - 1
mec-im/src/main/resources/application.yml

@@ -1,7 +1,18 @@
 server:
   port: 9999
   tomcat:
-    uri-encoding: UTF-8
+    accesslog:
+      enabled: true
+      buffered: true
+      directory: /var/logs
+      file-date-format: -yyyy-MM-dd
+      pattern: common
+      prefix: tomcat-im
+      rename-on-rotate: false
+      request-attributes-enabled: false
+      rotate: true
+      suffix: .log
+      uri-encoding: UTF-8
   ssl:
     enabled: false
     key-alias: sealclass

+ 1 - 1
mec-student/src/main/java/com/ym/mec/student/controller/CourseController.java

@@ -46,7 +46,7 @@ public class CourseController extends BaseController {
     }
 
     @ApiOperation(value = "根据群编号,获取群组基本信息")
-    @GetMapping("/course/findGroupById")
+    @GetMapping("/findGroupById")
     public Object findGroupById(Integer groupId){
         if(null == groupId){
             return failed("参数校验错误");

+ 12 - 0
mec-student/src/main/resources/application.yml

@@ -1,5 +1,17 @@
 server:
   port: 9001
+  tomcat:
+    accesslog:
+      enabled: true
+      buffered: true
+      directory: /var/logs
+      file-date-format: -yyyy-MM-dd
+      pattern: common
+      prefix: tomcat-student
+      rename-on-rotate: false
+      request-attributes-enabled: false
+      rotate: true
+      suffix: .log
 
 eureka:
   client:

+ 48 - 0
mec-student/src/main/resources/logback-spring.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+
+	<property name="LOG_HOME" value="/var/logs/student-%d{yyyy-MM-dd_HH}-%i.log" />
+	<property name="CONSOLE_LOG_PATTERN"
+		value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n" />
+
+	<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder charset="UTF-8">
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<appender name="file"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<FileNamePattern>${LOG_HOME}</FileNamePattern>
+			<MaxHistory>90</MaxHistory>
+			<TimeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<MaxFileSize>20MB</MaxFileSize>
+			</TimeBasedFileNamingAndTriggeringPolicy>
+		</rollingPolicy>
+
+		<encoder>
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<logger name="com.ym.mec" level="INFO" />
+
+	<!--开发环境:打印控制台 -->
+	<springProfile name="dev">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+	<!--生产环境:输出到文件 -->
+	<springProfile name="pro">
+		<root level="WARN">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+</configuration>

+ 2 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/HomeworkNoReplyRemaindTask.java

@@ -1,11 +1,13 @@
 package com.ym.mec.task.jobs;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import com.ym.mec.task.TaskRemoteService;
 import com.ym.mec.task.core.BaseTask;
 import com.ym.mec.task.core.TaskException;
 
+@Service
 public class HomeworkNoReplyRemaindTask extends BaseTask {
 
 	@Autowired

+ 2 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/PushNoSignOutMessageTask.java

@@ -1,11 +1,13 @@
 package com.ym.mec.task.jobs;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import com.ym.mec.task.TaskRemoteService;
 import com.ym.mec.task.core.BaseTask;
 import com.ym.mec.task.core.TaskException;
 
+@Service
 public class PushNoSignOutMessageTask extends BaseTask {
 
 	@Autowired

+ 2 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/StudentCoursesScheduleRemaindTask.java

@@ -1,11 +1,13 @@
 package com.ym.mec.task.jobs;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import com.ym.mec.task.TaskRemoteService;
 import com.ym.mec.task.core.BaseTask;
 import com.ym.mec.task.core.TaskException;
 
+@Service
 public class StudentCoursesScheduleRemaindTask extends BaseTask {
 
 	@Autowired

+ 2 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/StudentHomeworkRemaindTask.java

@@ -1,11 +1,13 @@
 package com.ym.mec.task.jobs;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import com.ym.mec.task.TaskRemoteService;
 import com.ym.mec.task.core.BaseTask;
 import com.ym.mec.task.core.TaskException;
 
+@Service
 public class StudentHomeworkRemaindTask extends BaseTask {
 
 	@Autowired

+ 2 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/StudentSignInRemaindTask.java

@@ -1,11 +1,13 @@
 package com.ym.mec.task.jobs;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import com.ym.mec.task.TaskRemoteService;
 import com.ym.mec.task.core.BaseTask;
 import com.ym.mec.task.core.TaskException;
 
+@Service
 public class StudentSignInRemaindTask extends BaseTask {
 
 	@Autowired

+ 2 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/TeacherCoursesScheduleRemaindTask.java

@@ -1,11 +1,13 @@
 package com.ym.mec.task.jobs;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import com.ym.mec.task.TaskRemoteService;
 import com.ym.mec.task.core.BaseTask;
 import com.ym.mec.task.core.TaskException;
 
+@Service
 public class TeacherCoursesScheduleRemaindTask extends BaseTask {
 
 	@Autowired

+ 2 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/TeacherSignInRemaindTask.java

@@ -1,11 +1,13 @@
 package com.ym.mec.task.jobs;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import com.ym.mec.task.TaskRemoteService;
 import com.ym.mec.task.core.BaseTask;
 import com.ym.mec.task.core.TaskException;
 
+@Service
 public class TeacherSignInRemaindTask extends BaseTask {
 
 	@Autowired

+ 2 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/UserAutoUnlockedTask.java

@@ -1,11 +1,13 @@
 package com.ym.mec.task.jobs;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import com.ym.mec.auth.api.client.AuthTaskFeignService;
 import com.ym.mec.task.core.BaseTask;
 import com.ym.mec.task.core.TaskException;
 
+@Service
 public class UserAutoUnlockedTask extends BaseTask {
 
 	@Autowired

+ 2 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/VipGroupTeacherSalarySettlementTask.java

@@ -1,11 +1,13 @@
 package com.ym.mec.task.jobs;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import com.ym.mec.task.TaskRemoteService;
 import com.ym.mec.task.core.BaseTask;
 import com.ym.mec.task.core.TaskException;
 
+@Service
 public class VipGroupTeacherSalarySettlementTask extends BaseTask {
 
 	@Autowired

+ 12 - 0
mec-task/src/main/resources/application.yml

@@ -1,5 +1,17 @@
 server:
   port: 8009
+  tomcat:
+    accesslog:
+      enabled: true
+      buffered: true
+      directory: /var/logs
+      file-date-format: -yyyy-MM-dd
+      pattern: common
+      prefix: tomcat-task
+      rename-on-rotate: false
+      request-attributes-enabled: false
+      rotate: true
+      suffix: .log
 
 eureka:
   client:

+ 12 - 0
mec-teacher/src/main/resources/application.yml

@@ -1,5 +1,17 @@
 server:
   port: 9002
+  tomcat:
+    accesslog:
+      enabled: true
+      buffered: true
+      directory: /var/logs
+      file-date-format: -yyyy-MM-dd
+      pattern: common
+      prefix: tomcat-teacher
+      rename-on-rotate: false
+      request-attributes-enabled: false
+      rotate: true
+      suffix: .log
 
 eureka:
   client:

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -94,6 +94,14 @@ public class CourseScheduleController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "批量删除课程")
+    @PostMapping(value = "/bathDelete")
+    @PreAuthorize("@pcs.hasPermissions('courseSchedule/bathDelete')")
+    public Object bathDelete(List<Long> courseScheduleIds){
+        scheduleService.deleteCourseSchedules(courseScheduleIds);
+        return succeed();
+    }
+
     @ApiOperation(value = "根据月份获取乐团在该月有课的日期")
     @GetMapping("/getCourseScheduleDateByMonth")
     @PreAuthorize("@pcs.hasPermissions('courseSchedule/getCourseScheduleDateByMonth')")

+ 29 - 25
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

@@ -1,37 +1,13 @@
 package com.ym.mec.web.controller;
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.dto.VipGroupApplyBaseInfoDto;
 import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.Employee;
-import com.ym.mec.biz.dal.entity.StudentApplyRefunds;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.StudentApplyRefunds.StudentApplyRefundsStatus;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
@@ -42,6 +18,20 @@ import com.ym.mec.biz.service.StudentApplyRefundsService;
 import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * @Author Joburgess
@@ -97,6 +87,7 @@ public class VipGroupManageController extends BaseController {
         return succeed(vipGroupService.findVipGroups(queryInfo));
     }
 
+
     @ApiOperation(value = "获取小课学员")
     @GetMapping(value = "/findVipGroupStudents")
     @PreAuthorize("@pcs.hasPermissions('vipGroupManage/findVipGroupStudents')")
@@ -241,4 +232,17 @@ public class VipGroupManageController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "更新vip课基本信息")
+    @PostMapping(value = "/updateVipBaseInfo")
+    public Object updateVipBaseInfo(VipGroupApplyBaseInfoDto vipGroupApplyBaseInfo){
+        vipGroupService.updateVipGroupBaseInfo(vipGroupApplyBaseInfo);
+        return succeed();
+    }
+
+    @ApiOperation(value = "新增vip课程计划")
+    @PostMapping(value = "/appendVipGroupCourseSchedules")
+    public Object appendVipGroupCourseSchedules(VipGroupApplyDto vipGroupApplyDto){
+        vipGroupService.appendVipGroupCourseSchedules(vipGroupApplyDto);
+        return succeed();
+    }
 }

+ 12 - 0
mec-web/src/main/resources/application.yml

@@ -1,5 +1,17 @@
 server:
   port: 8005
+  tomcat:
+    accesslog:
+      enabled: true
+      buffered: true
+      directory: /var/logs
+      file-date-format: -yyyy-MM-dd
+      pattern: common
+      prefix: tomcat-web
+      rename-on-rotate: false
+      request-attributes-enabled: false
+      rotate: true
+      suffix: .log
 
 eureka:
   client: