Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

周箭河 5 vuotta sitten
vanhempi
commit
581ca98764
34 muutettua tiedostoa jossa 428 lisäystä ja 74 poistoa
  1. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PageMonitorDao.java
  2. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java
  3. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java
  4. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java
  5. 88 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/PageMonitor.java
  6. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserContracts.java
  7. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Teacher.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ClassGroupTypeEnum.java
  9. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/GroupStatusEnum.java
  10. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/GroupType.java
  11. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  12. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderTypeEnum.java
  13. 6 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExportTeacherSalaryQueryInfo.java
  14. 11 1
      mec-biz/src/main/java/com/ym/mec/biz/service/GroupClassService.java
  15. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/service/PageMonitorService.java
  16. 14 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  17. 20 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java
  18. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  19. 2 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  20. 16 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/GroupClassServiceImpl.java
  21. 52 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PageMonitorServiceImpl.java
  22. 49 28
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  23. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeLessonApplyServiceImpl.java
  24. 1 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  25. 1 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  26. 4 4
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  27. 68 0
      mec-biz/src/main/resources/config/mybatis/PageMonitorMapper.xml
  28. 1 1
      mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml
  29. 5 4
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  30. 1 1
      mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java
  31. 10 0
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImUserModel.java
  32. 28 0
      mec-student/src/main/java/com/ym/mec/student/controller/PageMonitorController.java
  33. 6 1
      mec-util/src/main/java/com/ym/mec/util/http/HttpUtil.java
  34. 2 2
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PageMonitorDao.java

@@ -0,0 +1,16 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.PageMonitor;
+import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+public interface PageMonitorDao extends BaseDAO<Long, PageMonitor> {
+
+	/**
+	 * 根据事件和用户获取
+	 * @param userId
+	 * @param event
+	 * @return
+	 */
+	PageMonitor findByUserIdAndEvent(@Param("userId") Integer userId, @Param("event") String event);
+}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java

@@ -20,7 +20,7 @@ public class CourseListDto {
     @ApiModelProperty(value = "vip课编号",required = true)
     private String vipId;
 
-    @ApiModelProperty(value = "陪练课编号",required = true)
+    @ApiModelProperty(value = "网管课编号",required = true)
     private String practiceId;
 
     @ApiModelProperty(value = "班级编号",required = true)

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java

@@ -51,7 +51,7 @@ public class StudentManageListDto {
 
     private YesOrNoEnum hasCourse;
 
-    @ApiModelProperty(value = "是否有陪练课")
+    @ApiModelProperty(value = "是否有网管课")
     private YesOrNoEnum hasPracticeCourse;
 
     private String musicGroupName;

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -32,7 +32,7 @@ public class CourseSchedule {
 	public enum CourseScheduleType implements BaseEnum<String, CourseScheduleType> {
 
 		SINGLE("SINGLE", "单技课"), MIX("MIX", "合奏课"), HIGH("HIGH", "小班课"), VIP("VIP", "vip课"), DEMO("DEMO", "试听课"), COMPREHENSIVE("COMPREHENSIVE", "综合课"), PRACTICE(
-				"PRACTICE", "陪练课"), ENLIGHTENMENT("ENLIGHTENMENT", "启蒙课"), TRAINING_SINGLE("TRAINING_SINGLE", "集训单技课"), TRAINING_MIX("TRAINING_MIX", "集训合奏课"), CLASSROOM(
+				"PRACTICE", "网管课"), ENLIGHTENMENT("ENLIGHTENMENT", "启蒙课"), TRAINING_SINGLE("TRAINING_SINGLE", "集训单技课"), TRAINING_MIX("TRAINING_MIX", "集训合奏课"), CLASSROOM(
 				"CLASSROOM", "课堂课");
 
 		private String code;

+ 88 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/PageMonitor.java

@@ -0,0 +1,88 @@
+package com.ym.mec.biz.dal.entity;
+
+import java.util.Date;
+
+/**
+ * 对应数据库表(page_monitor):
+ */
+public class PageMonitor {
+	private Long id;
+
+	private String pageName;
+
+	private String pageUrl;
+
+	private String event;
+
+	private String eventName;
+
+	private Integer userId;
+
+	private Integer times;
+
+	private Date updateTime;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getPageName() {
+		return pageName;
+	}
+
+	public void setPageName(String pageName) {
+		this.pageName = pageName;
+	}
+
+	public String getPageUrl() {
+		return pageUrl;
+	}
+
+	public void setPageUrl(String pageUrl) {
+		this.pageUrl = pageUrl;
+	}
+
+	public String getEvent() {
+		return event;
+	}
+
+	public void setEvent(String event) {
+		this.event = event;
+	}
+
+	public String getEventName() {
+		return eventName;
+	}
+
+	public void setEventName(String eventName) {
+		this.eventName = eventName;
+	}
+
+	public Integer getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Integer userId) {
+		this.userId = userId;
+	}
+
+	public Integer getTimes() {
+		return times;
+	}
+
+	public void setTimes(Integer times) {
+		this.times = times;
+	}
+
+	public Date getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(Date updateTime) {
+		this.updateTime = updateTime;
+	}
+}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserContracts.java

@@ -11,7 +11,7 @@ public class SysUserContracts {
 
 	public enum ContractType implements BaseEnum<String, ContractType> {
 
-		REGISTER("注册"), INSTRUMENT("乐器借用"), COURSES("课程购买"), PRACTICE("陪练课购买");
+		REGISTER("注册"), INSTRUMENT("乐器借用"), COURSES("课程购买"), PRACTICE("网管课购买");
 
 		private String desc;
 

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Teacher.java

@@ -98,7 +98,7 @@ public class Teacher extends SysUser {
 	@ApiModelProperty(value = "是否支持课程奖励规则活动", required = false)
 	private Boolean isSupportCourseScheduleRewardsRules;
 	
-	@ApiModelProperty(value = "是否支持额外的陪练课", required = false)
+	@ApiModelProperty(value = "是否支持额外的网管课", required = false)
 	private Boolean isSupportExtraPracticeLesson;
 
 	private List<School> teacherSchools;

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

@@ -11,7 +11,7 @@ public enum ClassGroupTypeEnum implements BaseEnum<String, ClassGroupTypeEnum> {
 	HIGH("HIGH", "提高班"),
 	VIP("VIP", "vip课"),
 	DEMO("DEMO", "试听课"),
-	PRACTICE("PRACTICE", "陪练课"),
+	PRACTICE("PRACTICE", "网管课"),
 	SNAP("SNAP", "临时班级");
 
 	private String code;

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

@@ -10,7 +10,8 @@ public enum GroupStatusEnum implements BaseEnum<String, GroupStatusEnum> {
 
     NORMAL("NORMAL", "正常"),
     LOCK("LOCK", "锁定"),
-    FINISH("FINISH", "结束");
+    FINISH("FINISH", "结束"),
+    CANCEL("CANCEL", "取消");
 
     private String code;
 

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

@@ -3,7 +3,7 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum GroupType implements BaseEnum<String, GroupType> {
-	MUSIC("乐团课"), VIP("VIP课"), DEMO("试听课"), SPORADIC("零星收费"), PRACTICE("陪练课");
+	MUSIC("乐团课"), VIP("VIP课"), DEMO("试听课"), SPORADIC("零星收费"), PRACTICE("网管课");
 
 	private String desc;
 

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

@@ -38,8 +38,8 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     STUDENT_PUSH_ATTEND_COURSE_MESSAGE("STUDENT_PUSH_ATTEND_COURSE_MESSAGE", "上课提醒"),
     STUDENT_PUSH_ONLINE_COURSE_ACTION("STUDENT_PUSH_ONLINE_COURSE_ACTION", "线上课开始"),
     PUSH_TEACHER_COURSE_COLLIDE("PUSH_TEACHER_COURSE_COLLIDE", "课程冲突"),
-    PAY_PRACTICE_BUY_SUCCESS("PAY_PRACTICE_BUY_SUCCESS", "陪练课购买成功"),
-    PRACTICE_COMPLETED_STUDY_REPORT("PRACTICE_COMPLETED_STUDY_REPORT", "陪练课完成学习报告"),
+    PAY_PRACTICE_BUY_SUCCESS("PAY_PRACTICE_BUY_SUCCESS", "网管课购买成功"),
+    PRACTICE_COMPLETED_STUDY_REPORT("PRACTICE_COMPLETED_STUDY_REPORT", "网管课完成学习报告"),
     STUDENT_PUSH_NAMES_ACHIEVE("STUDENT_PUSH_NAMES_ACHIEVE", "点名完成"),
     SCHEDULE_CHANGE("SCHEDULE_CHANGE", "课表变动"),
     STUDENT_SMS_TEACHING_SCHOOL_CHANGE("STUDENT_SMS_TEACHING_SCHOOL_CHANGE", "教学点变动"),

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

@@ -11,7 +11,7 @@ public enum OrderTypeEnum implements BaseEnum<String, OrderTypeEnum> {
 	SPORADIC("SPORADIC", "零星收费"),
 	OTHER("OTHER", "其他"),
 	SMALL_CLASS_TO_BUY("SMALL_CLASS_TO_BUY", "小课购买"),
-	PRACTICE_GROUP_BUY("PRACTICE_GROUP_BUY", "陪练课购买"),
+	PRACTICE_GROUP_BUY("PRACTICE_GROUP_BUY", "网管课购买"),
 	LUCK("LUCK", "福袋活动");
 
 	private String code;

+ 6 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExportTeacherSalaryQueryInfo.java

@@ -3,19 +3,20 @@ package com.ym.mec.biz.dal.page;
 import com.ym.mec.common.page.QueryInfo;
 
 import javax.xml.crypto.Data;
+import java.util.Date;
 
 public class ExportTeacherSalaryQueryInfo extends QueryInfo {
 
     private Boolean isExport = false;
 
-    private Data month;
+    private Date date;
 
-    public Data getMonth() {
-        return month;
+    public Date getDate() {
+        return date;
     }
 
-    public void setMonth(Data month) {
-        this.month = month;
+    public void setDate(Date date) {
+        this.date = date;
     }
 
     public Boolean getIsExport() {

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

@@ -16,7 +16,17 @@ public interface GroupClassService {
      * @param groupType: 团体类型
      * @return boolean
      */
-    boolean deleteGroupInfo(String groupId, GroupType groupType);
+    boolean deleteAllGroupInfo(String groupId, GroupType groupType);
+
+    /**
+     * @describe 删除团体信息
+     * @author Joburgess
+     * @date 2020/2/17
+     * @param groupId: 团体编号
+     * @param groupType: 团体类型
+     * @return boolean
+     */
+    boolean deleteGroupOtherInfo(String groupId, GroupType groupType);
 
     /**
      * @describe 清理团新相关信息

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

@@ -0,0 +1,12 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.PageMonitor;
+import com.ym.mec.common.service.BaseService;
+
+public interface PageMonitorService extends BaseService<Long, PageMonitor> {
+    /**
+     * 新增页面监控
+     * @param pageMonitor
+     */
+    void add(PageMonitor pageMonitor);
+}

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

@@ -729,8 +729,21 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
         //获取相关老师
         teacherIds.addAll(classGroupDao.findGroupTeacher(groupId));
+
         if(teacherIds.size() > 0){
-            students.addAll(teacherDao.queryTeacherImModel(teacherIds));
+            List<ImUserModel> userModels = teacherDao.queryTeacherImModel(teacherIds);
+            userModels.forEach(e->{
+                if(musicGroup.getTeamTeacherId() != null && Integer.parseInt(e.getId()) == musicGroup.getTeamTeacherId()){
+                    e.setTitle("运营主管");
+                }else if(musicGroup.getEducationalTeacherId() != null && Integer.parseInt(e.getId()) == musicGroup.getEducationalTeacherId()){
+                        e.setTitle("教务老师");
+                }else if(musicGroup.getDirectorUserId() != null && Integer.parseInt(e.getId()) == musicGroup.getDirectorUserId()){
+                        e.setTitle("乐队指导");
+                }else {
+                    e.setTitle("指导老师");
+                }
+            });
+            students.addAll(userModels);
         }
         return students;
     }

+ 20 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java

@@ -159,6 +159,10 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 	@Override
 	public SysUserTsign register(Integer userId, String realName, String idCardNo, String mobileNo) {
 
+		if (StringUtils.isBlank(realName) || StringUtils.isBlank(idCardNo) || StringUtils.isBlank(mobileNo)) {
+			return null;
+		}
+
 		SysUserTsign sysUserTsign = sysUserTsignService.get(userId);
 		if (sysUserTsign == null) {
 
@@ -221,7 +225,9 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 			throw new BizException("生成pdf协议失败", e);
 		}
 
-		eSealPlugin.userSign(sysUserTsign.getAccountId(), sysUserTsign.getSealData(), srcPdfPath, srcPdfPath);
+		if (sysUserTsign != null) {
+			eSealPlugin.userSign(sysUserTsign.getAccountId(), sysUserTsign.getSealData(), srcPdfPath, srcPdfPath);
+		}
 
 		Date date = new Date();
 		// 上传到oss
@@ -365,7 +371,9 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		}
 
 		eSealPlugin.organSign(organTsign.getSealData(), srcPdfPath, srcPdfPath);
-		eSealPlugin.userSign(sysUserTsign.getAccountId(), sysUserTsign.getSealData(), srcPdfPath, srcPdfPath);
+		if (sysUserTsign != null) {
+			eSealPlugin.userSign(sysUserTsign.getAccountId(), sysUserTsign.getSealData(), srcPdfPath, srcPdfPath);
+		}
 
 		// 上传到oss
 		String dateStrOss = dateFormatOss.format(date);
@@ -526,7 +534,9 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 
 		eSealPlugin.organSign(organTsign.getSealData(), srcPdfPath, srcPdfPath);
 
-		eSealPlugin.userSign(sysUserTsign.getAccountId(), sysUserTsign.getSealData(), srcPdfPath, srcPdfPath);
+		if (sysUserTsign != null) {
+			eSealPlugin.userSign(sysUserTsign.getAccountId(), sysUserTsign.getSealData(), srcPdfPath, srcPdfPath);
+		}
 
 		// 上传到oss
 		String dateStrOss = dateFormatOss.format(date);
@@ -691,7 +701,9 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 
 		eSealPlugin.organSign(organTsign.getSealData(), srcPdfPath, srcPdfPath);
 
-		eSealPlugin.userSign(sysUserTsign.getAccountId(), sysUserTsign.getSealData(), srcPdfPath, srcPdfPath);
+		if (sysUserTsign != null) {
+			eSealPlugin.userSign(sysUserTsign.getAccountId(), sysUserTsign.getSealData(), srcPdfPath, srcPdfPath);
+		}
 
 		// 上传到oss
 		String dateStrOss = dateFormatOss.format(date);
@@ -815,7 +827,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		try {
 			result = FileUtils.readFileToString(srcFile);
 		} catch (IOException e) {
-			throw new BizException("读取陪练课购买协议出错", e);
+			throw new BizException("读取网管课购买协议出错", e);
 		} finally {
 			FileUtils.deleteQuietly(srcFile);
 		}
@@ -872,7 +884,9 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 
 		eSealPlugin.organSign(organTsign.getSealData(), srcPdfPath, srcPdfPath);
 
-		eSealPlugin.userSign(sysUserTsign.getAccountId(), sysUserTsign.getSealData(), srcPdfPath, srcPdfPath);
+		if (sysUserTsign != null) {
+			eSealPlugin.userSign(sysUserTsign.getAccountId(), sysUserTsign.getSealData(), srcPdfPath, srcPdfPath);
+		}
 
 		// 上传到oss
 		String dateStrOss = dateFormatOss.format(date);

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

@@ -2967,7 +2967,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             throw new BizException("调整失败: 课程状态异常");
         }
         if(!oldCourseSchedule.getGroupType().equals(GroupType.PRACTICE)){
-            throw new BizException("请选择陪练课");
+            throw new BizException("请选择网管课");
         }
         //已结算的课酬不能调整
         CourseScheduleTeacherSalary teacherSalary = courseScheduleTeacherSalaryDao.queryByCourseScheduleIdAndUserId(oldCourseSchedule.getId(), oldCourseSchedule.getActualTeacherId());
@@ -3043,7 +3043,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             throw new BizException("调整失败: 课程状态异常");
         }
         if(!oldCourseSchedule.getGroupType().equals(GroupType.PRACTICE)){
-            throw new BizException("请选择陪练课");
+            throw new BizException("请选择网管课");
         }
         if(teacherId.equals(oldCourseSchedule.getActualTeacherId())){
             throw new BizException("请选择不同的老师");

+ 2 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -693,9 +693,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     public List<ExportTeacherSalaryDto> exportTeacherSalary(ExportTeacherSalaryQueryInfo queryInfo) {
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
-        Date months = DateUtil.addMonths(new Date(), -1);
-        String firstDayOfMonth = DateUtil.format(DateUtil.getFirstDayOfMonth(months),DateUtil.ISO_EXPANDED_DATE_FORMAT);
-        String lastDayOfMonth =  DateUtil.format(DateUtil.getLastDayOfMonth(months),DateUtil.ISO_EXPANDED_DATE_FORMAT);
+        String firstDayOfMonth = DateUtil.format(DateUtil.getFirstDayOfMonth(queryInfo.getDate()),DateUtil.ISO_EXPANDED_DATE_FORMAT);
+        String lastDayOfMonth =  DateUtil.format(DateUtil.getLastDayOfMonth(queryInfo.getDate()),DateUtil.ISO_EXPANDED_DATE_FORMAT);
         params.put("firstDayOfMonth",firstDayOfMonth);
         params.put("lastDayOfMonth",lastDayOfMonth);
         List<ExportTeacherSalaryDto> exportTeacherSalaryDtos = new ArrayList<>();

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

@@ -37,7 +37,7 @@ public class GroupClassServiceImpl implements GroupClassService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean deleteGroupInfo(String groupId, GroupType groupType) {
+    public boolean deleteAllGroupInfo(String groupId, GroupType groupType) {
         groupDao.deleteGroup(groupId,groupType.getCode());
         classGroupDao.deleteByGroup(groupId,groupType);
         classGroupTeacherMapperDao.deleteByGroup(groupId,groupType);
@@ -52,6 +52,21 @@ public class GroupClassServiceImpl implements GroupClassService {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean deleteGroupOtherInfo(String groupId, GroupType groupType) {
+        classGroupDao.deleteByGroup(groupId,groupType);
+        classGroupTeacherMapperDao.deleteByGroup(groupId,groupType);
+        classGroupTeacherSalaryDao.deleteByGroup(groupId,groupType);
+        classGroupStudentMapperDao.deleteByGroup(groupId,groupType);
+        courseScheduleDao.deleteByGroup(groupId,groupType);
+        courseScheduleTeacherSalaryDao.deleteByGroup(groupId,groupType);
+        courseScheduleStudentPaymentDao.deleteByGroup(groupId,groupType);
+        teacherAttendanceDao.deleteByGroup(groupId,groupType);
+        studentAttendanceDao.deleteByGroup(groupId,groupType);
+        return true;
+    }
+
+    @Override
     public boolean cleanGroupInfo(String groupId, GroupType groupType) {
 
         return false;

+ 52 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PageMonitorServiceImpl.java

@@ -0,0 +1,52 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.PageMonitorDao;
+import com.ym.mec.biz.dal.entity.PageMonitor;
+import com.ym.mec.biz.service.PageMonitorService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+
+@Service
+public class PageMonitorServiceImpl extends BaseServiceImpl<Long, PageMonitor>  implements PageMonitorService {
+	
+	@Autowired
+	private PageMonitorDao pageMonitorDao;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+	@Override
+	public BaseDAO<Long, PageMonitor> getDAO() {
+		return pageMonitorDao;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void add(PageMonitor pageMonitor) {
+		if(pageMonitor == null){
+			throw new BizException("参数校验失败");
+		}
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if(sysUser == null){
+			throw new BizException("用户信息获取失败");
+		}
+		Integer userId = sysUser.getId();
+		PageMonitor oldPageMonitor = pageMonitorDao.findByUserIdAndEvent(userId,pageMonitor.getEvent());
+		if(oldPageMonitor == null){
+			pageMonitor.setUserId(userId);
+			pageMonitor.setTimes(1);
+			pageMonitorDao.insert(pageMonitor);
+		}else {
+			oldPageMonitor.setTimes(oldPageMonitor.getTimes() + 1);
+			oldPageMonitor.setUpdateTime(new Date());
+			pageMonitorDao.update(oldPageMonitor);
+		}
+	}
+}

+ 49 - 28
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -212,7 +212,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         int recordNum = practiceLessonApplyDao.checkUserIsApply(userId);
         LocalDateTime now=LocalDateTime.now();
         if(recordNum>0){
-            LocalDateTime applyExpireDateTime=LocalDateTime.parse("2020-03-01 00:00:00", DateUtil.dateTimeFormatter);
+            LocalDateTime applyExpireDateTime=LocalDateTime.parse("2020-02-29 00:00:00", DateUtil.dateTimeFormatter);
             result.put("canApply", now.compareTo(applyExpireDateTime)<=0?1:0);
         }else{
             LocalDateTime applyExpireDateTime=LocalDateTime.parse("2020-02-22 20:00:00", DateUtil.dateTimeFormatter);
@@ -1628,25 +1628,25 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         if (practiceGroup.getFirstCourseTime().before(activityStartDate)
                 || practiceGroup.getFirstCourseTime().after(activityEndDate)) {
             result.put("status", "APPLY_DATE_OVERFLOW");
-            result.put("info", "预约失败,陪练课的时间超出活动时间范围(2020-3-31之前),请重试。");
+            result.put("info", "预约失败,网管课的时间超出活动时间范围(2020-3-31之前),请重试。");
             return result;
         }
         if (practiceGroup.getSecondCourseTime().before(activityStartDate)
                 || practiceGroup.getSecondCourseTime().after(activityEndDate)) {
             result.put("status", "APPLY_DATE_OVERFLOW");
-            result.put("info", "预约失败,陪练课的时间超出活动时间范围(2020-3-31之前),请重试。");
+            result.put("info", "预约失败,网管课的时间超出活动时间范围(2020-3-31之前),请重试。");
             return result;
         }
         if (DateUtil.isSameDay(practiceGroup.getFirstCourseTime(), practiceGroup.getSecondCourseTime())) {
             result.put("status", "TWO_DATE_ON_ONE_DAY");
-            result.put("info", "预约失败,陪练课选择时间重复,请重试。");
+            result.put("info", "预约失败,网管课选择时间重复,请重试。");
             return result;
         }
 
         int recordNum = practiceLessonApplyDao.checkUserIsApply(practiceGroup.getStudentId());
         if(recordNum>0){
             LocalDateTime nowDateTime=LocalDateTime.now();
-            LocalDateTime applyExpireDateTime=LocalDateTime.parse("2020-03-01 00:00:00", DateUtil.dateTimeFormatter);
+            LocalDateTime applyExpireDateTime=LocalDateTime.parse("2020-02-29 00:00:00", DateUtil.dateTimeFormatter);
             if(nowDateTime.compareTo(applyExpireDateTime)>0){
                 result.put("status", "APPLY_DATE_OVERFLOW");
                 result.put("info", "预约失败,超出可预约时间范围。");
@@ -1680,13 +1680,13 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         if (allCourseDates.get(2).before(activityStartDate)
                 || allCourseDates.get(2).after(courseExpireDate)) {
             result.put("status", "APPLY_DATE_OVERFLOW");
-            result.put("info", "预约失败,陪练课的时间超出活动时间范围(2020-3-31之前),请重试。");
+            result.put("info", "预约失败,网管课的时间超出活动时间范围(2020-3-31之前),请重试。");
             return result;
         }
         if (allCourseDates.get(3).before(activityStartDate)
                 || allCourseDates.get(3).after(courseExpireDate)) {
             result.put("status", "APPLY_DATE_OVERFLOW");
-            result.put("info", "预约失败,陪练课的时间超出活动时间范围(2020-3-31之前),请重试。");
+            result.put("info", "预约失败,网管课的时间超出活动时间范围(2020-3-31之前),请重试。");
             return result;
         }
         allCourseDates.sort(Comparator.comparing(Date::getTime));
@@ -1698,7 +1698,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
         if (applyTimes >= 1) {
             result.put("status", "IS_APPLIED");
-            result.put("info", "您已经完成陪练课预约,请勿重复预约。");
+            result.put("info", "您已经完成网管课预约,请勿重复预约。");
             return result;
         }
         applyTimes += 1;
@@ -2094,7 +2094,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     public Object findPracticeGroupCourseSchedules(PracticeGroupQueryInfo queryInfo) {
         PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         if (Objects.isNull(queryInfo.getPracticeId())) {
-            throw new BizException("请指定陪练课课程");
+            throw new BizException("请指定网管课课程");
         }
 
         Map<String, Object> params = new HashMap<>();
@@ -2102,7 +2102,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
         PracticeGroup practiceGroup = practiceGroupDao.get(queryInfo.getPracticeId());
         if (Objects.isNull(practiceGroup)) {
-            throw new BizException("指定的陪练课不存在");
+            throw new BizException("指定的网管课不存在");
         }
         List<CourseSchedule> dataList = courseScheduleDao.findGroupCourseSchedules(practiceGroup.getId(), GroupType.PRACTICE.getCode());
         int count = dataList.size();
@@ -2384,6 +2384,10 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         ZoneId zoneId = ZoneId.systemDefault();
 
         LocalDate now = LocalDate.now();
+        LocalDate tempCourseDate=LocalDate.parse("2020-03-01", DateUtil.dateFormatter);
+        if(now.isBefore(tempCourseDate)){
+            now = tempCourseDate;
+        }
         if(renew){
             PracticeGroup userLatestPracticeGroup = practiceGroupDao.findUserPracticeGroup(userId,groupId);
             if(Objects.nonNull(userLatestPracticeGroup)){
@@ -2641,13 +2645,17 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
         Date now=new Date();
         LocalDate courseStartDay=LocalDate.now();
+        LocalDate tempCourseLocalDate=LocalDate.parse("2020-03-01", DateUtil.dateFormatter);
+        if(courseStartDay.isBefore(tempCourseLocalDate)){
+            courseStartDay = tempCourseLocalDate;
+        }
         if(practiceGroupBuyParams.isRenew()){
             if(Objects.isNull(practiceGroupBuyParams.getGroupId())){
                 return BaseController.failed(HttpStatus.EXPECTATION_FAILED, "请选择需要续费的课程");
             }
             PracticeGroup userLatestPracticeGroup = practiceGroupDao.findUserPracticeGroup(practiceGroupBuyParams.getStudentId(),practiceGroupBuyParams.getGroupId());
             if(Objects.nonNull(userLatestPracticeGroup)){
-                if(userLatestPracticeGroup.getCoursesExpireDate().before(now)){
+                if(userLatestPracticeGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL)&&userLatestPracticeGroup.getCoursesExpireDate().before(now)){
                     throw new BizException("当前课程组已经无法续费,请选择购买");
                 }
                 LocalDate lastExpiredDay=LocalDateTime.ofInstant(userLatestPracticeGroup.getCoursesExpireDate().toInstant(),DateUtil.zoneId).toLocalDate();
@@ -2889,7 +2897,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                 studentPaymentOrder.setUpdateTime(now);
                 studentPaymentOrder.setOrganId(practiceGroupBuyParams.getOrganId());
 
-                sysUserCashAccountService.updateBalance(practiceGroupBuyParams.getStudentId(), studentPaymentOrder.getExpectAmount().negate(),PlatformCashAccountDetailTypeEnum.PAY_FEE,"陪练课购买");
+                sysUserCashAccountService.updateBalance(practiceGroupBuyParams.getStudentId(), studentPaymentOrder.getExpectAmount().negate(),PlatformCashAccountDetailTypeEnum.PAY_FEE,"网管课购买");
 
                 this.orderCallback(studentPaymentOrder);
 
@@ -2899,7 +2907,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                 return BaseController.succeed(result);
             }else{
                 if (userCashAccount.getBalance().doubleValue() > 0) {
-                    sysUserCashAccountService.updateBalance(practiceGroupBuyParams.getStudentId(), userCashAccount.getBalance().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "陪练课购买");
+                    sysUserCashAccountService.updateBalance(practiceGroupBuyParams.getStudentId(), userCashAccount.getBalance().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "网管课购买");
                     amount = studentPaymentOrder.getExpectAmount().subtract(userCashAccount.getBalance());
                     studentPaymentOrder.setActualAmount(amount);
                     studentPaymentOrder.setBalancePaymentAmount(userCashAccount.getBalance());
@@ -2921,7 +2929,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                     orderNo,
                     baseApiUrl+"/api-student/studentOrder/notify",
                     baseApiUrl+"/api-student/studentOrder/paymentResult?orderNo=" + orderNo,
-                    "陪练课购买",
+                    "网管课购买",
                     practiceGroupBuyParams.getName(),
                     practiceGroupBuyParams.getStudentId(),
                     classFee,
@@ -2989,14 +2997,23 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             return;
         }
 
+        Long ingOrderNum=statusOrderNumMap.get(DealStatusEnum.ING);
+        if(Objects.nonNull(ingOrderNum)&&ingOrderNum>1&&order.getStatus().equals(DealStatusEnum.FAILED)){
+            studentPaymentOrderDao.update(order);
+            return;
+        }
+
         if(order.getStatus().equals(DealStatusEnum.SUCCESS)){
             courseScheduleDao.updateGroupCourseLock(order.getMusicGroupId(),GroupType.PRACTICE,0);
         }else{
             if(Objects.nonNull(order.getBalancePaymentAmount())){
-                sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "陪练课购买失败");
+                sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课购买失败");
             }
             studentPaymentOrderDao.update(order);
-            groupService.deleteGroupInfo(order.getMusicGroupId(),GroupType.PRACTICE);
+            PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(order.getMusicGroupId()));
+            practiceGroup.setGroupStatus(GroupStatusEnum.CANCEL);
+            practiceGroupDao.update(practiceGroup);
+            groupService.deleteGroupOtherInfo(order.getMusicGroupId(),GroupType.PRACTICE);
             return;
         }
         studentPaymentOrderDao.update(order);
@@ -3160,16 +3177,19 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         }
         PracticeGroup practiceGroup = practiceGroupDao.lockPracticeGroup(practiceGroupId);
         if(Objects.isNull(practiceGroup)){
-            return BaseController.failed(HttpStatus.DESTINATION_LOCKED, "此课程组已过期,请重新购买");
+            return BaseController.failed(HttpStatus.FAILED_DEPENDENCY, "该课程组已失效,请重新购买");
+        }
+        if(practiceGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL)){
+            return BaseController.failed(HttpStatus.CREATED, "该订单已经支付成功");
         }
-        if(!practiceGroup.getGroupStatus().equals(GroupStatusEnum.LOCK)){
-            return BaseController.failed(HttpStatus.DESTINATION_LOCKED, "此课程组订单正在支付中");
+        if(practiceGroup.getGroupStatus().equals(GroupStatusEnum.CANCEL)){
+            return BaseController.failed(HttpStatus.FAILED_DEPENDENCY, "该课程组已失效,请重新购买");
         }
         List<StudentPaymentOrder> userGroupOrders = studentPaymentOrderDao.findUserGroupOrders(userId, practiceGroupId.toString(), GroupType.PRACTICE,null);
         Map<DealStatusEnum, List<StudentPaymentOrder>> statusOrderMap = userGroupOrders.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getStatus));
         List<StudentPaymentOrder> successOrders=statusOrderMap.get(DealStatusEnum.SUCCESS);
         if(!CollectionUtils.isEmpty(successOrders)&&successOrders.size()>0){
-            return BaseController.failed(HttpStatus.DESTINATION_LOCKED, "该订单已经支付成功,请勿重复购买");
+            return BaseController.failed(HttpStatus.CREATED, "该订单已经支付成功");
         }
 
         StudentPaymentOrder latestOrder=userGroupOrders.stream().max(Comparator.comparing(StudentPaymentOrder::getId)).get();
@@ -3179,14 +3199,15 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
         List<StudentPaymentOrder> ingOrders = statusOrderMap.get(DealStatusEnum.ING);
         if(CollectionUtils.isEmpty(ingOrders)||ingOrders.size()<=0){
-            return BaseController.failed(HttpStatus.DESTINATION_LOCKED, "该订单支付失败,请重新购买");
-        }else{
-            for (StudentPaymentOrder ingOrder : ingOrders) {
-                ingOrder.setStatus(DealStatusEnum.CLOSE);
-                ingOrder.setMemo("用户重新支付");
-                studentPaymentOrderDao.update(ingOrder);
-            }
+            return BaseController.failed(HttpStatus.FAILED_DEPENDENCY, "该课程组已失效,请重新购买");
         }
+//        else{
+//            for (StudentPaymentOrder ingOrder : ingOrders) {
+//                ingOrder.setStatus(DealStatusEnum.CLOSE);
+//                ingOrder.setMemo("用户重新支付");
+//                studentPaymentOrderDao.update(ingOrder);
+//            }
+//        }
 
         String orderNo=idGeneratorService.generatorId("payment") + "";
         String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
@@ -3201,7 +3222,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                     orderNo,
                     baseApiUrl+"/api-student/studentOrder/notify",
                     baseApiUrl+"/api-student/studentOrder/paymentResult?orderNo=" + orderNo,
-                    "陪练课购买",
+                    "网管课购买",
                     practiceGroup.getName(),
                     practiceGroup.getStudentId(),
                     classFee,

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

@@ -63,7 +63,7 @@ public class PracticeLessonApplyServiceImpl extends BaseServiceImpl<Integer, Pra
 		}
 		PracticeLessonApply lessonApply = practiceLessonApplyDao.findByUserId(sysUser.getId());
 		if(lessonApply != null){
-			throw new BizException("您已申请过陪练课!");
+			throw new BizException("您已申请过网管课!");
 		}
 		PracticeLessonApply practiceLessonApply = new PracticeLessonApply();
 		practiceLessonApply.setCreateTime(new Date());

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

@@ -497,7 +497,7 @@
             practice_group pg
             LEFT JOIN class_group cg ON pg.id_=cg.music_group_id_ AND cg.group_type_='PRACTICE'
         WHERE
-            pg.user_id_ = #{teacherId} AND cg.del_flag_ = 0
+            pg.user_id_ = #{teacherId} AND cg.del_flag_ = 0 AND pg.group_status_!='CANCEL' AND pg.group_status_!='LOCK'
     </select>
     <select id="findTeacherVipClassGroup" resultMap="TeacherClassGroupDto">
         SELECT

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

@@ -1339,7 +1339,7 @@
         LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'VIP'
         LEFT JOIN practice_group pg ON pg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'PRACTICE'
         WHERE cgsm.user_id_ = #{userId} AND cgsm.status_ != 'QUIT'
-        AND (mg.status_ = 'PROGRESS' OR vg.group_status_  = 2 OR vg.group_status_ = 4 OR (pg.id_ IS NOT NULL AND pg.group_status_!='LOCK'))
+        AND (mg.status_ = 'PROGRESS' OR vg.group_status_  = 2 OR vg.group_status_ = 4 OR (pg.id_ IS NOT NULL AND pg.group_status_!='LOCK' AND pg.group_status_!='CANCEL'))
         ORDER BY cgsm.music_group_id_
         <include refid="global.limit"/>
     </select>

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

@@ -538,7 +538,7 @@
 		LEFT JOIN music_group mg ON (mg.id_ = ts.music_group_id_ AND ts.group_type_ = 'MUSIC')
 		LEFT JOIN organization mgo ON mgo.id_ = mg.organ_id_
 		LEFT JOIN charge_type ct ON ct.id_ = mg.charge_type_id_
-		WHERE cs.class_date_ BETWEEN #{firstDayOfMonth} AND #{lastDayOfMonth} AND cs.`del_flag_` != 1 AND cs.group_type_ = 'MUSIC'
+		WHERE cs.class_date_ BETWEEN #{firstDayOfMonth} AND #{lastDayOfMonth} AND cs.`del_flag_` != 1 AND cs.group_type_ = 'MUSIC' AND ts.settlement_time_ IS NOT NULL
 		GROUP BY ts.id_,ta.id_
 	</select>
 	<select id="exportVipTeacherSalary" resultMap="ExportTeacherSalaryDtoMap">
@@ -567,7 +567,7 @@
 		LEFT JOIN course_schedule_student_payment sp ON sp.course_schedule_id_ = ts.course_schedule_id_
 		LEFT JOIN vip_group vg ON (vg.id_ = ts.music_group_id_ AND ts.group_type_ = 'VIP')
 		LEFT JOIN organization vgo ON vgo.id_ = vg.organ_id_
-		WHERE cs.class_date_ BETWEEN #{firstDayOfMonth} AND #{lastDayOfMonth} AND cs.`del_flag_` != 1 AND cs.group_type_ = 'VIP'
+		WHERE cs.class_date_ BETWEEN #{firstDayOfMonth} AND #{lastDayOfMonth} AND cs.`del_flag_` != 1 AND cs.group_type_ = 'VIP' AND ts.settlement_time_ IS NOT NULL
 		GROUP BY ts.id_,ta.id_
 	</select>
 	<select id="querySettlementScheduleId" resultType="java.lang.Long">
@@ -579,7 +579,7 @@
 		u.real_name_ teacherName,o.name_ teacherOrganName,
 		CASE WHEN cs.teach_mode_ = 'OFFLINE' THEN '线下' WHEN cs.teach_mode_ = 'ONLINE' THEN '线上' END teach_mode_,
 		CASE WHEN t.job_nature_ = 'PART_TIME' THEN '兼职' WHEN t.job_nature_ = 'FULL_TIME' THEN '全职' ELSE '零时工' END jobType,
-		'陪练课' courseScheduleType,
+		'网管课' courseScheduleType,
 		cs.class_date_ classDate,cs.start_class_time_ courseScheduleStartTime,cs.end_class_time_ courseScheduleEndTime,
 		ROUND((UNIX_TIMESTAMP(cs.end_class_time_)-UNIX_TIMESTAMP(cs.start_class_time_))/60) signCourseScheduleTime,
 		ts.actual_salary_ price,s.name_ address,
@@ -599,7 +599,7 @@
 		LEFT JOIN course_schedule_student_payment sp ON sp.course_schedule_id_ = ts.course_schedule_id_
 		LEFT JOIN practice_group pg ON (pg.id_ = ts.music_group_id_ AND ts.group_type_ = 'PRACTICE')
 		LEFT JOIN organization pgo ON pgo.id_ = pg.organ_id_
-		WHERE cs.class_date_ BETWEEN #{firstDayOfMonth} AND #{lastDayOfMonth} AND cs.`del_flag_` != 1 AND cs.group_type_ = 'PRACTICE'
+		WHERE cs.class_date_ BETWEEN #{firstDayOfMonth} AND #{lastDayOfMonth} AND cs.`del_flag_` != 1 AND cs.group_type_ = 'PRACTICE' AND ts.settlement_time_ IS NOT NULL
 		GROUP BY ts.id_,ta.id_
 	</select>
 </mapper>

+ 68 - 0
mec-biz/src/main/resources/config/mybatis/PageMonitorMapper.xml

@@ -0,0 +1,68 @@
+<?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.PageMonitorDao">
+
+    <resultMap type="com.ym.mec.biz.dal.entity.PageMonitor" id="PageMonitor">
+        <result column="id_" property="id"/>
+        <result property="updateTime" column="update_time_"/>
+        <result property="userId" column="user_id_"/>
+        <result property="times" column="times_"/>
+        <result property="event" column="event_"/>
+        <result property="eventName" column="event_name_"/>
+        <result property="pageName" column="page_name_"/>
+        <result property="pageUrl" column="page_url_"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="PageMonitor">
+		SELECT * FROM page_monitor WHERE id_ = #{id} 
+	</select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="PageMonitor">
+		SELECT * FROM page_monitor ORDER BY id_
+	</select>
+    <select id="findByUserIdAndEvent" resultMap="PageMonitor">
+        SELECT * FROM page_monitor WHERE user_id_ = #{userId} AND event_ = #{event} LIMIT 1 FOR UPDATE
+    </select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.PageMonitor" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        INSERT INTO page_monitor (page_name_,page_url_,event_,event_name_,user_id_,times_,update_time_)
+        VALUES(#{pageName},#{pageUrl},#{event},#{eventName},#{userId},#{times},NOW())
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.Organization">
+        UPDATE page_monitor
+        <set>
+            <if test="pageName != null">
+                page_name_ = #{pageName},
+            </if>
+            <if test="pageUrl != null">
+                page_url_ = #{pageUrl},
+            </if>
+            <if test="event != null">
+                event_ = #{event},
+            </if>
+            <if test="eventName != null">
+                event_name_ = #{eventName},
+            </if>
+            <if test="userId != null">
+                user_id_ = #{userId},
+            </if>
+            <if test="times != null">
+                times_ = #{times},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = #{updateTime}
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
+</mapper>

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

@@ -150,7 +150,7 @@
 			LEFT JOIN `subject` s ON pg.subject_id_ = s.id_
 		WHERE
 			student_id_=#{userId}
-			AND pg.group_status_!='FINISH'
+			AND (pg.group_status_='NORMAL' OR pg.group_status_='LOCK')
 			AND pg.buy_months_ IS NOT NULL
 	</select>
 	<select id="findUserPracticeGroup" resultMap="PracticeGroup">

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

@@ -84,14 +84,15 @@
             keyColumn="id" keyProperty="id">
         INSERT INTO student_payment_order
         (id_, group_type_, user_id_,organ_id_, type_, expect_amount_, actual_amount_, com_amount_, per_amount_,
-         balance_payment_amount_, trans_no_,
+         balance_payment_amount_, remit_fee_, trans_no_,
          status_, memo_, create_time_, update_time_, payment_channel_, payment_business_channel_,
-         payment_account_no_, order_no_, music_group_id_, class_group_id_)
+         payment_account_no_, mer_nos_, order_no_, music_group_id_, class_group_id_)
         VALUES (#{id}, #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
                 #{userId},#{organId}, #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-                #{expectAmount}, #{actualAmount}, #{comAmount}, #{perAmount}, #{balancePaymentAmount}, #{transNo},
+                #{expectAmount}, #{actualAmount}, #{comAmount}, #{perAmount}, #{balancePaymentAmount},
+                #{remitFee}, #{transNo},
                 #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{memo}, now(), now(),
-                #{paymentChannel}, #{paymentBusinessChannel}, #{paymentAccountNo}, #{orderNo}, #{musicGroupId},
+                #{paymentChannel}, #{paymentBusinessChannel}, #{paymentAccountNo}, #{merNos}, #{orderNo}, #{musicGroupId},
                 #{classGroupId})
     </insert>
 

+ 1 - 1
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -93,6 +93,6 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 
 	@Override
 	public void updateHistoryPracticeGroupStatus() {
-		logger.info("历史陪练课状态更新失败");
+		logger.info("历史网管课状态更新失败");
 	}
 }

+ 10 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImUserModel.java

@@ -7,6 +7,8 @@ public class ImUserModel {
 
     public String name;
 
+    private String title;
+
     public String portrait;
 
     private Integer minute;
@@ -26,6 +28,14 @@ public class ImUserModel {
     public ImUserModel() {
     }
 
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
     public String getId() {
         return id;
     }

+ 28 - 0
mec-student/src/main/java/com/ym/mec/student/controller/PageMonitorController.java

@@ -0,0 +1,28 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.biz.dal.entity.PageMonitor;
+import com.ym.mec.biz.service.PageMonitorService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("pageMonitor")
+@Api(tags = "页面监控")
+@RestController
+public class PageMonitorController extends BaseController {
+
+    @Autowired
+    private PageMonitorService pageMonitorService;
+
+    @ApiOperation(value = "新增页面监控")
+    @PostMapping("/add")
+    private Object add(PageMonitor pageMonitor){
+        pageMonitorService.add(pageMonitor);
+        return succeed();
+    }
+
+}

+ 6 - 1
mec-util/src/main/java/com/ym/mec/util/http/HttpUtil.java

@@ -44,7 +44,12 @@ public class HttpUtil {
 			paramMap.put("url",URLDecoder.decode(url,"UTF-8"));
 			paramMap.put("key","5dc941c5d3c3816ac84898d7@3d0e03b46a30f4fea51f038e5cd411c5");
 			String s = get("http://mrw.so/api.htm", paramMap);
-			return JSONObject.parseObject(s).getString("url");
+			String shortUrl=JSONObject.parseObject(s).getString("url");
+			if(StringUtils.isNotBlank(shortUrl)){
+				return shortUrl;
+			}else{
+				return url;
+			}
 		}catch (Exception e){
 			return url;
 		}

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -125,7 +125,7 @@ public class ExportController extends BaseController {
         List<StudentManageListDto> rows = studentManageService.findStudentsByOrganId(queryInfo).getRows();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "学员姓名", "性别", "家长姓名",
-                    "家长联系电话", "是否激活", "是否有课", "是否预约陪练课","是否有陪练课", "课程余额(元)",
+                    "家长联系电话", "是否激活", "是否有课", "是否预约网管课","是否有网管课", "课程余额(元)",
                     "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态"}, new String[]{
                     "organName", "userId", "username", "gender.description", "parentsName", "parentsPhone",
                     "isActive.msg","hasCourse.msg","isMake.msg","hasPracticeCourse.msg","courseBalance","musicGroupName",
@@ -171,7 +171,7 @@ public class ExportController extends BaseController {
             });
         }
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部","陪练课编号", "课程名称", "指导老师", "班级人数", "先上课单价", "线下课单价",
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部","网管课编号", "课程名称", "指导老师", "班级人数", "先上课单价", "线下课单价",
                     "当前课次", "总课次", "剩余课次","开课时间", "结束时间"}, new String[]{
                     "organName","id", "name", "teacherName", "studentNum", "onlineClassesUnitPrice",
                     "offlineClassesUnitPrice", "currentClassTimes", "totalClassTimes", "subClassTimes","coursesStartDate", "coursesExpireDate"}, rows);