Browse Source

系统收费,推送已经bug修改

zouxuan 4 years ago
parent
commit
eda158f5e2

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

@@ -33,4 +33,11 @@ public interface MusicGroupSchoolTermCourseDetailDao extends BaseDAO<Integer, Mu
      * @return
      */
     List<MusicGroupSchoolTermCourseDetail> queryAllNoCourse();
+
+    /**
+     * 获取当前学期截止前14天的乐团,并提醒排课
+     * @param remindCourseTime
+     * @return
+     */
+    List<String> queryPushCourseTermMusicIds(String remindCourseTime);
 }

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

@@ -4,6 +4,7 @@ import com.ym.mec.common.enums.BaseEnum;
 
 public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     SMS_APPLY_MESSAGE("SMS_APPLY_MESSAGE", "报名通知"),
+    REMIND_EDUCATION_COURSE_TIME("REMIND_EDUCATION_COURSE_TIME", "排课提醒"),
     SMS_VERIFY_CODE_LOGIN("SMS_VERIFY_CODE_LOGIN", "验证码登录"),
     KAPTCHA_SESSION_KEY("KAPTCHA_SESSION_KEY", "登录图形验证码"),
     SMS_PAYMENT_MESSAGE("SMS_PAYMENT_MESSAGE", "缴费通知"),

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

@@ -10,4 +10,5 @@ public interface MusicGroupSchoolTermCourseDetailService extends BaseService<Int
 
     HttpResponseResult upset(MusicGroupSchoolTermCourseDetail musicGroupSchoolTermCourseDetail);
 
+    HttpResponseResult musicSchoolTermPush();
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -213,6 +213,9 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
 
     String WARNING_MIN_COURSE_SALARY = "warning_min_course_salary";
 
+    //提醒乐团主管排下学期的课程的时间节点(默认提前14天)
+    String REMIND_COURSE_TIME = "remind_course_time";
+
     /**
      * @return com.ym.mec.biz.dal.entity.SysConfig
      * @params paramName

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

@@ -2629,7 +2629,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //校验所有学员的课时都有消耗
         String studentName = musicGroupSchoolTermStudentCourseDetailDao.getNoCourseStudentName(musicGroupSchoolTermCourseDetailId);
         if(StringUtils.isNotEmpty(studentName)){
-            throw new BizException("操作失败:{} 学员未排课,请检查排课是否完整",studentName);
+            throw new BizException("操作失败:{} 未排课,请检查排课是否完整",studentName);
         }
         //获取所有预排课课程列表
         List<CourseSchedule> courseSchedules = courseScheduleDao.queryPreCourseListByMusicGroupId(termCourseDetail.getMusicGroupId());

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

@@ -239,6 +239,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		}
 		//会员原价
 		BigDecimal memberPaymentAmount = BigDecimal.ZERO;
+		BigDecimal originalMemberPaymentAmount = BigDecimal.ZERO;
 		if (payUserType == SCHOOL) {
 			status = AUDITING;
 		} else {
@@ -304,12 +305,15 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				switch (musicGroupPaymentCalenderDto.getMemberValidDate()){
 					case 1 :
 						memberPaymentAmount = memberFee.getCurrentMonthFee().setScale(0, BigDecimal.ROUND_HALF_UP);
+						originalMemberPaymentAmount = memberFee.getCurrentMonthFee().setScale(0, BigDecimal.ROUND_HALF_UP);
 						break;
 					case 6 :
 						memberPaymentAmount = memberFee.getCurrentHalfYearFee().setScale(0, BigDecimal.ROUND_HALF_UP);
+						originalMemberPaymentAmount = memberFee.getOriginalHalfYearFee().setScale(0, BigDecimal.ROUND_HALF_UP);
 						break;
 					case 12 :
 						memberPaymentAmount = memberFee.getCurrentYearFee().setScale(0, BigDecimal.ROUND_HALF_UP);
+						originalMemberPaymentAmount = memberFee.getOriginalYearFee().setScale(0, BigDecimal.ROUND_HALF_UP);
 						break;
 					default:
 						throw new BizException("请选择正确的会员有效期");
@@ -337,7 +341,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 
 			MusicGroupPaymentCalender musicGroupPaymentCalender = new MusicGroupPaymentCalender();
 			musicGroupPaymentCalender.setAttribute1(musicGroupPaymentCalenderDto.getAttribute1());
-			musicGroupPaymentCalender.setOriginalMemberPaymentAmount(memberPaymentAmount);
+			musicGroupPaymentCalender.setOriginalMemberPaymentAmount(originalMemberPaymentAmount);
 			musicGroupPaymentCalender.setAttribute2(musicGroupPaymentCalenderDto.getAttribute2());
 			musicGroupPaymentCalender.setDeadlinePaymentDate(musicGroupPaymentDateRange.getDeadlinePaymentDate());
 			musicGroupPaymentCalender.setIsGiveMusicNetwork(musicGroupPaymentCalenderDto.getIsGiveMusicNetwork());

+ 51 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSchoolTermCourseDetailServiceImpl.java

@@ -1,17 +1,23 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentMemberCourseDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermCourseDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermStudentCourseDetail;
 import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.service.MusicGroupSchoolTermCourseDetailService;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+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;
@@ -20,7 +26,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl<Integer, MusicGroupSchoolTermCourseDetail>  implements MusicGroupSchoolTermCourseDetailService {
@@ -39,6 +48,12 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 	private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
 	@Autowired
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+	@Autowired
+	private SysConfigDao sysConfigDao;
+	@Autowired
+	private SysMessageService sysMessageService;
+	@Autowired
+	private TeacherDao teacherDao;
 
 	@Override
 	public BaseDAO<Integer, MusicGroupSchoolTermCourseDetail> getDAO() {
@@ -135,6 +150,42 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 		return BaseController.succeed(courseDetail);
 	}
 
+	@Override
+	public HttpResponseResult musicSchoolTermPush() {
+		String remindCourseTime = sysConfigDao.findConfigValue(SysConfigService.REMIND_COURSE_TIME);
+		if(StringUtils.isEmpty(remindCourseTime)){
+			remindCourseTime = "14";
+		}
+		//获取当前学期截止前14天的乐团,并提醒教务老师排课
+		List<String> musicGroupIds = musicGroupSchoolTermCourseDetailDao.queryPushCourseTermMusicIds(remindCourseTime);
+		if(musicGroupIds.size() > 0){
+			List<MusicGroup> musicGroupList = musicGroupDao.getMusicGroupByIds(musicGroupIds);
+			List<Integer> educationIds = musicGroupList.stream().map(e -> e.getEducationalTeacherId()).collect(Collectors.toList());
+			Map<Integer, String> educationNameMap = MapUtil.convertMybatisMap(teacherDao.queryNameByIdList(educationIds));
+			for (MusicGroup musicGroup : musicGroupList) {
+				Map<Integer,String> userMap = new HashMap<>(1);
+				userMap.put(musicGroup.getEducationalTeacherId(),educationNameMap.get(musicGroup.getEducationalTeacherId()));
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
+						MessageTypeEnum.REMIND_EDUCATION_COURSE_TIME,
+						userMap,
+						null,
+						0,
+						null,
+						null,
+						musicGroup.getName());
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
+						MessageTypeEnum.REMIND_EDUCATION_COURSE_TIME,
+						userMap,
+						null,
+						0,
+						null,
+						"SYSTEM",
+						musicGroup.getName());
+			}
+		}
+		return null;
+	}
+
 	private MusicGroupSchoolTermCourseDetail getCourseDetail(MusicGroupSchoolTermCourseDetail courseDetail){
 		Date startCourseDate = courseDetail.getStartCourseDate();
 		//一个学期默认为6个月,9月1日—2月28、29日,3月1日—8月31日

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

@@ -92,4 +92,8 @@
 		SELECT * FROM music_group_school_term_course_detail
 		WHERE course_flag_ = 0
 	</select>
+    <select id="queryPushCourseTermMusicIds" resultType="java.lang.String">
+		SELECT music_group_id_ FROM music_group_school_term_course_detail
+		GROUP BY music_group_id_ HAVING DATEDIFF(MAX(end_school_term_),NOW()) = #{remindCourseTime}
+	</select>
 </mapper>

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

@@ -142,10 +142,8 @@
 		GROUP BY music_group_school_term_course_detail_id_
 	</select>
 	<select id="getNoCourseStudentName" resultType="java.lang.String">
-		SELECT COUNT(id_) > 0 FROM music_group_school_term_student_course_detail
-		WHERE music_group_school_term_course_detail_id_ = #{musicGroupSchoolTermCourseDetailId} AND pre_member_course_minutes_ = 0
 		SELECT GROUP_CONCAT(DISTINCT su.username_) FROM music_group_school_term_student_course_detail mgs
-															LEFT JOIN sys_user su ON su.id_ = mgs.user_id_
+		LEFT JOIN sys_user su ON su.id_ = mgs.user_id_
 		WHERE music_group_school_term_course_detail_id_ = #{musicGroupSchoolTermCourseDetailId} AND pre_member_course_minutes_ = 0
 	</select>
 	<select id="findByDetailId" resultMap="MusicGroupSchoolTermStudentCourseDetail">

+ 4 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -199,4 +199,8 @@ public interface TaskRemoteService {
 	//每天凌晨3点清理所有的乐团预排课
 	@GetMapping("task/autoCleanPreCourseTask")
 	void autoCleanPreCourseTask();
+
+	//每天10点推送排课、续费、退团提醒
+	@GetMapping("task/autoCleanPreCourseTask")
+    void musicSchoolTermPush();
 }

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

@@ -247,4 +247,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 	public void autoCleanPreCourseTask() {
 		logger.error("每天凌晨3点清理所有的乐团预排课");
 	}
+
+    @Override
+    public void musicSchoolTermPush() {
+        logger.error("每天10点推送乐团排课、续费、退团提醒");
+    }
 }

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/MusicSchoolTermPushTask.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class MusicSchoolTermPushTask extends BaseTask {
+
+    @Autowired
+    private TaskRemoteService taskRemoteService;
+
+    @Override
+    public void execute() throws TaskException {
+        taskRemoteService.musicSchoolTermPush();
+    }
+}

+ 6 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupSchoolTermCourseDetailController.java

@@ -26,4 +26,10 @@ public class MusicGroupSchoolTermCourseDetailController extends BaseController {
 	public HttpResponseResult upset(MusicGroupSchoolTermCourseDetail musicGroupSchoolTermCourseDetail) {
 		return musicGroupSchoolTermCourseDetailService.upset(musicGroupSchoolTermCourseDetail);
 	}
+
+	@ApiOperation("每天10点推送排课、续费、退团提醒")
+	@GetMapping(value = "musicSchoolTermPush")
+	public HttpResponseResult musicSchoolTermPush() {
+		return musicGroupSchoolTermCourseDetailService.musicSchoolTermPush();
+	}
 }