|
@@ -49,6 +49,8 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
|
|
|
@Autowired
|
|
|
private SysConfigDao sysConfigDao;
|
|
|
@Autowired
|
|
|
+ private SysTenantConfigService sysTenantConfigService;
|
|
|
+ @Autowired
|
|
|
private SysMessageService sysMessageService;
|
|
|
@Autowired
|
|
|
private TeacherDao teacherDao;
|
|
@@ -166,191 +168,144 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void musicSchoolTermPush() {
|
|
|
- Object o = redisCache.get("musicSchoolTermPush");
|
|
|
- if(o != null){
|
|
|
- return;
|
|
|
- }
|
|
|
- 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> educationPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(educationIds,",")));
|
|
|
- for (MusicGroup musicGroup : musicGroupList) {
|
|
|
- Map<Integer,String> userMap = new HashMap<>(1);
|
|
|
- userMap.put(musicGroup.getEducationalTeacherId(),educationPhoneMap.get(musicGroup.getEducationalTeacherId()));
|
|
|
- sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
|
|
|
- MessageTypeEnum.SYSTEM_REMIND_EDUCATION_COURSE_TIME,
|
|
|
- userMap,
|
|
|
- null,
|
|
|
- 0,
|
|
|
- null,
|
|
|
- null,
|
|
|
- musicGroup.getName());
|
|
|
- Map<Integer,String> userMap1 = new HashMap<>(1);
|
|
|
- userMap1.put(musicGroup.getEducationalTeacherId(),musicGroup.getEducationalTeacherId().toString());
|
|
|
- sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
|
|
|
- MessageTypeEnum.SYSTEM_REMIND_EDUCATION_COURSE_TIME,
|
|
|
- userMap1,
|
|
|
- null,
|
|
|
- 0,
|
|
|
- null,
|
|
|
- "SYSTEM",
|
|
|
- musicGroup.getName());
|
|
|
+ public void musicSchoolTermPush(Integer tenantId) {
|
|
|
+ String remindCourseTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.REMIND_COURSE_TIME,tenantId);
|
|
|
+ if(StringUtils.isNotEmpty(remindCourseTime)){
|
|
|
+ //获取当前学期截止前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> educationPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(educationIds,",")));
|
|
|
+ for (MusicGroup musicGroup : musicGroupList) {
|
|
|
+ Map<Integer,String> userMap = new HashMap<>(1);
|
|
|
+ userMap.put(musicGroup.getEducationalTeacherId(),educationPhoneMap.get(musicGroup.getEducationalTeacherId()));
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
|
|
|
+ MessageTypeEnum.SYSTEM_REMIND_EDUCATION_COURSE_TIME,
|
|
|
+ userMap,
|
|
|
+ null,
|
|
|
+ 0,
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ musicGroup.getName());
|
|
|
+ Map<Integer,String> userMap1 = new HashMap<>(1);
|
|
|
+ userMap1.put(musicGroup.getEducationalTeacherId(),musicGroup.getEducationalTeacherId().toString());
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
|
|
|
+ MessageTypeEnum.SYSTEM_REMIND_EDUCATION_COURSE_TIME,
|
|
|
+ userMap1,
|
|
|
+ null,
|
|
|
+ 0,
|
|
|
+ null,
|
|
|
+ "SYSTEM",
|
|
|
+ musicGroup.getName());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ //提醒会员续费
|
|
|
+ String pushMemberRenewAgain = sysTenantConfigService.getTenantConfigValue(SysConfigService.PUSH_MEMBER_RENEW_AGAIN,tenantId);
|
|
|
String memberName = "黄金会员";
|
|
|
MemberRankSetting memberRankSetting = memberRankSettingDao.get(1);
|
|
|
if(memberRankSetting != null){
|
|
|
memberName = memberRankSetting.getName();
|
|
|
}
|
|
|
- Date date = new Date();
|
|
|
- //试用会员结束3天提醒学员缴费
|
|
|
-// String experiencePushMemberRenew = sysConfigDao.findConfigValue(SysConfigService.EXPERIENCE_PUSH_MEMBER_RENEW);
|
|
|
-// if(StringUtils.isEmpty(experiencePushMemberRenew)){
|
|
|
-// experiencePushMemberRenew = "3";
|
|
|
-// }
|
|
|
-// List<Integer> studentIds = studentDao.queryPushMemberRenew(experiencePushMemberRenew);
|
|
|
- /*if(studentIds.size() > 0){
|
|
|
- Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(studentIds,",")));
|
|
|
- Map<Integer,String> userMap = new HashMap<>(studentIds.size());
|
|
|
- Map<Integer,String> userMap1 = new HashMap<>(studentIds.size());
|
|
|
- for (Integer studentId : studentIds) {
|
|
|
- userMap.put(studentId,studentPhoneMap.get(studentId));
|
|
|
- userMap1.put(studentId,studentId.toString());
|
|
|
- }
|
|
|
- sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
|
|
|
- MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
|
|
|
- userMap,
|
|
|
- null,
|
|
|
- 0,
|
|
|
- null,
|
|
|
- null,memberName,pushMemberRenew);
|
|
|
-
|
|
|
- sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
|
|
|
- MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
|
|
|
- userMap1,
|
|
|
- null,
|
|
|
- 0,
|
|
|
- null,
|
|
|
- "STUDENT",memberName,pushMemberRenew);
|
|
|
- }*/
|
|
|
- //会员结束前5天提醒学员续费
|
|
|
- String pushMemberRenewAgain = sysConfigDao.findConfigValue(SysConfigService.PUSH_MEMBER_RENEW_AGAIN);
|
|
|
- if(StringUtils.isEmpty(pushMemberRenewAgain)){
|
|
|
- pushMemberRenewAgain = "5";
|
|
|
- }
|
|
|
- List<Integer> studentIdList = studentDao.queryPushMemberRenew(pushMemberRenewAgain);
|
|
|
- if(studentIdList.size() > 0){
|
|
|
- Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(studentIdList,",")));
|
|
|
- Map<Integer,String> userMap = new HashMap<>(studentIdList.size());
|
|
|
- Map<Integer,String> userMap1 = new HashMap<>(studentIdList.size());
|
|
|
- for (Integer studentId : studentIdList) {
|
|
|
- userMap.put(studentId,studentPhoneMap.get(studentId));
|
|
|
- userMap1.put(studentId,studentId.toString());
|
|
|
- }
|
|
|
- sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
|
|
|
- MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
|
|
|
- userMap,
|
|
|
- null,
|
|
|
- 0,
|
|
|
- null,
|
|
|
- null,memberName,pushMemberRenewAgain);
|
|
|
-
|
|
|
- sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
|
|
|
- MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
|
|
|
- userMap1,
|
|
|
- null,
|
|
|
- 0,
|
|
|
- null,
|
|
|
- "STUDENT",memberName,pushMemberRenewAgain);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- //会员结束前15天自动创建乐团续费(默认提前15天)
|
|
|
- String autoCreateMemberRenew = sysConfigDao.findConfigValue(SysConfigService.AUTO_CREATE_MEMBER_RENEW);
|
|
|
- if(StringUtils.isEmpty(autoCreateMemberRenew)){
|
|
|
- autoCreateMemberRenew = "15";
|
|
|
- }
|
|
|
- Map<String,String> studentMusicMap = MapUtil.convertMybatisMap(studentRegistrationDao.queryAutoCreateStudentMap(autoCreateMemberRenew));
|
|
|
- if(studentMusicMap.size() > 0){
|
|
|
- for (String musicGroupId : studentMusicMap.keySet()) {
|
|
|
- MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
|
|
|
- // 所有缴费项目已完成排课才能创建下一个缴费项目
|
|
|
-// String orignBatchNo = musicGroupPaymentStudentCourseDetailService.getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes(musicGroupId, null, null,null);
|
|
|
-// if (StringUtils.isNoneBlank(orignBatchNo)) {
|
|
|
-// logger.error("自动创建缴费项目失败,{} 乐团存在未排课的缴费项目",musicGroup.getName());
|
|
|
-// continue;
|
|
|
-// }
|
|
|
- MemberFeeSetting memberFee = memberFeeSettingDao.findByRankIdAndOrganId(musicGroup.getOrganId(), memberRankSetting.getId());
|
|
|
- if(memberFee == null){
|
|
|
- Organization organization = organizationDao.get(musicGroup.getOrganId());
|
|
|
- logger.error("自动创建缴费项目失败,{} 分部会员收费标准未配置",organization.getName());
|
|
|
- continue;
|
|
|
- }
|
|
|
- //创建缴费项目
|
|
|
- MusicGroupPaymentCalenderDto musicGroupPaymentCalenderDto = new MusicGroupPaymentCalenderDto();
|
|
|
- musicGroupPaymentCalenderDto.setMusicGroupId(musicGroupId);
|
|
|
- musicGroupPaymentCalenderDto.setMemberValidDate(6);
|
|
|
- musicGroupPaymentCalenderDto.setMemo("系统自动创建缴费项目");
|
|
|
- musicGroupPaymentCalenderDto.setMemberRankSettingId(memberRankSetting.getId());
|
|
|
- musicGroupPaymentCalenderDto.setPayUserType(MusicGroupPaymentCalender.PayUserType.STUDENT);
|
|
|
- musicGroupPaymentCalenderDto.setPaymentType(MusicGroupPaymentCalender.PaymentType.MUSIC_RENEW);
|
|
|
- musicGroupPaymentCalenderDto.setPaymentPattern(1);
|
|
|
- musicGroupPaymentCalenderDto.setMemberPaymentAmount(memberFee.getGroupPurchaseHalfYearFee().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
- musicGroupPaymentCalenderDto.setAutoCreate(true);
|
|
|
- musicGroupPaymentCalenderDto.setIsGiveMusicNetwork(false);
|
|
|
- List<MusicGroupPaymentCalenderDto.MusicGroupPaymentDateRange> musicGroupPaymentDateRangeList = new ArrayList<>();
|
|
|
- MusicGroupPaymentCalenderDto.MusicGroupPaymentDateRange range = new MusicGroupPaymentCalenderDto().new MusicGroupPaymentDateRange();
|
|
|
- range.setStartPaymentDate(date);
|
|
|
- range.setDeadlinePaymentDate(DateUtil.addMonths(date,1));
|
|
|
- musicGroupPaymentDateRangeList.add(range);
|
|
|
- musicGroupPaymentCalenderDto.setMusicGroupPaymentDateRangeList(musicGroupPaymentDateRangeList);
|
|
|
- String batchNo = "";
|
|
|
- try {
|
|
|
- batchNo = musicGroupPaymentCalenderService.create(musicGroupPaymentCalenderDto);
|
|
|
- }catch (Exception e){
|
|
|
- logger.error("{} 乐团自动创建缴费项目失败,失败原因:{}",musicGroup.getName(),e.getMessage());
|
|
|
- continue;
|
|
|
- }
|
|
|
- MusicGroupPaymentCalender calender = musicGroupPaymentCalenderService.findByBatchNo(batchNo).get(0);
|
|
|
- Set<Integer> userIdList = Arrays.stream(studentMusicMap.get(musicGroupId).split(",")).map(Integer::new).collect(Collectors.toSet());
|
|
|
- musicGroupPaymentCalenderDetailService.batchAdd(calender.getId(),userIdList,musicGroup,true);
|
|
|
- Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(studentMusicMap.get(musicGroupId)));
|
|
|
- Map<Integer,String> userMap = new HashMap<>(userIdList.size());
|
|
|
- Map<Integer,String> userMap1 = new HashMap<>(userIdList.size());
|
|
|
- for (Integer studentId : userIdList) {
|
|
|
+ if(StringUtils.isNotEmpty(pushMemberRenewAgain)){
|
|
|
+ List<Integer> studentIdList = studentDao.queryPushMemberRenew(pushMemberRenewAgain);
|
|
|
+ if(studentIdList.size() > 0){
|
|
|
+ Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(studentIdList,",")));
|
|
|
+ Map<Integer,String> userMap = new HashMap<>(studentIdList.size());
|
|
|
+ Map<Integer,String> userMap1 = new HashMap<>(studentIdList.size());
|
|
|
+ for (Integer studentId : studentIdList) {
|
|
|
userMap.put(studentId,studentPhoneMap.get(studentId));
|
|
|
userMap1.put(studentId,studentId.toString());
|
|
|
}
|
|
|
- String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
|
|
|
- String pushUrl = baseApiUrl + "/#/musicGroupRenew?calenderId=" + calender.getId() + "&id=" + musicGroupId;
|
|
|
- String sortUrl = HttpUtil.getSortUrl(pushUrl);
|
|
|
sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
|
|
|
- MessageTypeEnum.SMS_AUTO_STUDENT_MEMBER_RENEW_MESSAGE,
|
|
|
+ MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
|
|
|
userMap,
|
|
|
null,
|
|
|
0,
|
|
|
- sortUrl,
|
|
|
- null,memberName,autoCreateMemberRenew,sortUrl);
|
|
|
+ null,
|
|
|
+ null,memberName,pushMemberRenewAgain);
|
|
|
|
|
|
sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
|
|
|
- MessageTypeEnum.PUSH_AUTO_STUDENT_MEMBER_RENEW_MESSAGE,
|
|
|
+ MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
|
|
|
userMap1,
|
|
|
null,
|
|
|
0,
|
|
|
- "4?" + pushUrl,
|
|
|
- "STUDENT",memberName,autoCreateMemberRenew);
|
|
|
+ null,
|
|
|
+ "STUDENT",memberName,pushMemberRenewAgain);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Date date = new Date();
|
|
|
+ //会员结束前15天自动创建乐团续费(默认提前15天)
|
|
|
+ String autoCreateMemberRenew = sysTenantConfigService.getTenantConfigValue(SysConfigService.AUTO_CREATE_MEMBER_RENEW,tenantId);
|
|
|
+ if(StringUtils.isNotEmpty(autoCreateMemberRenew)){
|
|
|
+ Map<String,String> studentMusicMap = MapUtil.convertMybatisMap(studentRegistrationDao.queryAutoCreateStudentMap(autoCreateMemberRenew));
|
|
|
+ if(studentMusicMap.size() > 0){
|
|
|
+ for (String musicGroupId : studentMusicMap.keySet()) {
|
|
|
+ MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
|
|
|
+ MemberFeeSetting memberFee = memberFeeSettingDao.findByRankIdAndOrganId(musicGroup.getOrganId(), memberRankSetting.getId());
|
|
|
+ if(memberFee == null){
|
|
|
+ Organization organization = organizationDao.get(musicGroup.getOrganId());
|
|
|
+ logger.error("自动创建缴费项目失败,{} 分部会员收费标准未配置",organization.getName());
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //创建缴费项目
|
|
|
+ MusicGroupPaymentCalenderDto musicGroupPaymentCalenderDto = new MusicGroupPaymentCalenderDto();
|
|
|
+ musicGroupPaymentCalenderDto.setMusicGroupId(musicGroupId);
|
|
|
+ musicGroupPaymentCalenderDto.setMemberValidDate(6);
|
|
|
+ musicGroupPaymentCalenderDto.setMemo("系统自动创建缴费项目");
|
|
|
+ musicGroupPaymentCalenderDto.setMemberRankSettingId(memberRankSetting.getId());
|
|
|
+ musicGroupPaymentCalenderDto.setPayUserType(MusicGroupPaymentCalender.PayUserType.STUDENT);
|
|
|
+ musicGroupPaymentCalenderDto.setPaymentType(MusicGroupPaymentCalender.PaymentType.MUSIC_RENEW);
|
|
|
+ musicGroupPaymentCalenderDto.setPaymentPattern(1);
|
|
|
+ musicGroupPaymentCalenderDto.setMemberPaymentAmount(memberFee.getGroupPurchaseHalfYearFee().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ musicGroupPaymentCalenderDto.setAutoCreate(true);
|
|
|
+ musicGroupPaymentCalenderDto.setIsGiveMusicNetwork(false);
|
|
|
+ List<MusicGroupPaymentCalenderDto.MusicGroupPaymentDateRange> musicGroupPaymentDateRangeList = new ArrayList<>();
|
|
|
+ MusicGroupPaymentCalenderDto.MusicGroupPaymentDateRange range = new MusicGroupPaymentCalenderDto().new MusicGroupPaymentDateRange();
|
|
|
+ range.setStartPaymentDate(date);
|
|
|
+ range.setDeadlinePaymentDate(DateUtil.addMonths(date,1));
|
|
|
+ musicGroupPaymentDateRangeList.add(range);
|
|
|
+ musicGroupPaymentCalenderDto.setMusicGroupPaymentDateRangeList(musicGroupPaymentDateRangeList);
|
|
|
+ String batchNo = "";
|
|
|
+ try {
|
|
|
+ batchNo = musicGroupPaymentCalenderService.create(musicGroupPaymentCalenderDto);
|
|
|
+ }catch (Exception e){
|
|
|
+ logger.error("{} 乐团自动创建缴费项目失败,失败原因:{}",musicGroup.getName(),e.getMessage());
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ MusicGroupPaymentCalender calender = musicGroupPaymentCalenderService.findByBatchNo(batchNo).get(0);
|
|
|
+ Set<Integer> userIdList = Arrays.stream(studentMusicMap.get(musicGroupId).split(",")).map(Integer::new).collect(Collectors.toSet());
|
|
|
+ musicGroupPaymentCalenderDetailService.batchAdd(calender.getId(),userIdList,musicGroup,true);
|
|
|
+ Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(studentMusicMap.get(musicGroupId)));
|
|
|
+ Map<Integer,String> userMap = new HashMap<>(userIdList.size());
|
|
|
+ Map<Integer,String> userMap1 = new HashMap<>(userIdList.size());
|
|
|
+ for (Integer studentId : userIdList) {
|
|
|
+ userMap.put(studentId,studentPhoneMap.get(studentId));
|
|
|
+ userMap1.put(studentId,studentId.toString());
|
|
|
+ }
|
|
|
+ String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
|
|
|
+ String pushUrl = baseApiUrl + "/#/musicGroupRenew?calenderId=" + calender.getId() + "&id=" + musicGroupId;
|
|
|
+ String sortUrl = HttpUtil.getSortUrl(pushUrl);
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
|
|
|
+ MessageTypeEnum.SMS_AUTO_STUDENT_MEMBER_RENEW_MESSAGE,
|
|
|
+ userMap,
|
|
|
+ null,
|
|
|
+ 0,
|
|
|
+ sortUrl,
|
|
|
+ null,memberName,autoCreateMemberRenew,sortUrl);
|
|
|
+
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
|
|
|
+ MessageTypeEnum.PUSH_AUTO_STUDENT_MEMBER_RENEW_MESSAGE,
|
|
|
+ userMap1,
|
|
|
+ null,
|
|
|
+ 0,
|
|
|
+ "4?" + pushUrl,
|
|
|
+ "STUDENT",memberName,autoCreateMemberRenew);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- redisCache.getRedisTemplate().opsForValue().set("musicSchoolTermPush","musicSchoolTermPush",
|
|
|
- 23,
|
|
|
- TimeUnit.HOURS);
|
|
|
}
|
|
|
|
|
|
private MusicGroupSchoolTermCourseDetail getCourseDetail(MusicGroupSchoolTermCourseDetail courseDetail){
|