Ver Fonte

系统收费

zouxuan há 4 anos atrás
pai
commit
8e8e0a3ce7
21 ficheiros alterados com 188 adições e 28 exclusões
  1. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  2. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  3. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalender.java
  4. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  5. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderService.java
  6. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  7. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentServeService.java
  8. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  9. 19 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  10. 12 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSchoolTermCourseDetailServiceImpl.java
  11. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  12. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java
  13. 1 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  14. 4 1
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  15. 8 0
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  16. 8 0
      mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java
  17. 10 0
      mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java
  18. 19 0
      mec-task/src/main/java/com/ym/mec/task/jobs/CleanStudentMemberTask.java
  19. 19 0
      mec-task/src/main/java/com/ym/mec/task/jobs/MemberEndAutoQuitMusicTask.java
  20. 8 0
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupPaymentCalenderController.java
  21. 28 14
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -237,4 +237,9 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      * @return
      */
     List<Integer> queryPushMemberRenew(String pushMemberRenew);
+
+    /**
+     * 清空学员会员
+     */
+    void cleanStudentMember();
 }

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

@@ -631,4 +631,11 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @return
      */
     int countPayAndCheckNum(@Param("musicGroupId") String musicGroupId);
+
+    /**
+     * 获取所有在会员团,但是没有会员,并且没有待生效的学员
+     * @param memberEndAutoQuitMusic
+     * @return
+     */
+    List<StudentRegistration> queryMemberEndAutoQuitMusic(String memberEndAutoQuitMusic);
 }

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

@@ -34,7 +34,7 @@ public class MusicGroupPaymentCalender {
 	}
 
 	public enum PaymentCalenderStatusEnum implements BaseEnum<String, PaymentCalenderStatusEnum> {
-		AUDITING("审核中"), REJECT("拒绝"), NO("未开启缴费"), OPEN("开启缴费"), OVER("缴费已结束"), PAID("已缴费");
+		AUDITING("审核中"), REJECT("拒绝"), NO("未开启缴费"), OPEN("开启缴费"), OVER("缴费已结束"), PAID("已缴费"), DRAFT("草稿");
 
 		private String desc;
 

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

@@ -4,7 +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", "排课提醒"),
+    SYSTEM_REMIND_EDUCATION_COURSE_TIME("SYSTEM_REMIND_EDUCATION_COURSE_TIME", "排课提醒"),
     STUDENT_MEMBER_RENEW_MESSAGE("STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
     STUDENT_MEMBER_RENEW_QUIT_MESSAGE("STUDENT_MEMBER_RENEW_QUIT_MESSAGE", "会员续费提醒"),
     SMS_VERIFY_CODE_LOGIN("SMS_VERIFY_CODE_LOGIN", "验证码登录"),

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderService.java

@@ -162,4 +162,10 @@ public interface MusicGroupPaymentCalenderService extends BaseService<Long, Musi
 	 * @return com.ym.mec.biz.dal.entity.MusicGroupStudentFee
 	 */
 	void pushWaitRenewMessage(Long calenderId, MusicGroup musicGroup, Set<Integer> studentIds);
+
+	/**
+	 * 待审核缴费撤回
+	 * @param batchNo
+	 */
+	void revoke(String batchNo);
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java

@@ -372,4 +372,9 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @return
 	 */
 	List<MusicGroup> findByCooperationId(Integer cooperationId);
+
+	/**
+	 * 会员到期后学员自动退团
+	 */
+    void memberEndAutoQuitMusic();
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentServeService.java

@@ -69,4 +69,9 @@ public interface StudentServeService {
      * 更新学生服务指标
      */
     void closeStudentServiceTag();
+
+    /**
+     * 解除会员
+     */
+    void cleanStudentMember();
 }

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

@@ -222,6 +222,9 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     //会员结束前5天提醒学员续费(退团提醒)(默认提前15天)
     String PUSH_MEMBER_RENEW_QUIT = "push_member_renew_quit";
 
+    //会员结束后3天学员自动退团
+    String MEMBER_END_AUTO_QUIT_MUSIC = "member_end_auto_quit_music";
+
     String CHILDREN_DAY_VIP_ACTIVITY_IDS = "children_day_vip_activity_ids";
 
     /**

+ 19 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -567,8 +567,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		}
 		
 		PaymentCalenderStatusEnum status = musicGroupPaymentCalenderList.get(0).getStatus();
-		if(status != PaymentCalenderStatusEnum.REJECT){
-			throw new BizException("只有[拒绝]状态的缴费才能修改");
+		if(status != PaymentCalenderStatusEnum.REJECT && status != PaymentCalenderStatusEnum.DRAFT){
+			throw new BizException("{}的缴费状态不允许修改",status.getDesc());
 		}
 		String musicGroupId = musicGroupPaymentCalenderDto.getMusicGroupId();
 
@@ -1451,7 +1451,23 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		}
 	}
 
-    @Override
+	@Override
+	@Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
+	public void revoke(String batchNo) {
+		List<MusicGroupPaymentCalender> calenders = musicGroupPaymentCalenderDao.findByBatchNo(batchNo);
+		if(calenders.size() == 0){
+			throw new BizException("缴费批次不存在");
+		}
+		calenders.forEach(e->{
+			if(e.getStatus() != AUDITING){
+				throw new BizException("{} 的缴费状态不允许撤回",e.getStatus().getDesc());
+			}
+			e.setStatus(DRAFT);
+		});
+		musicGroupPaymentCalenderDao.batchUpdate(calenders);
+	}
+
+	@Override
 	@Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
 	public boolean autoUpdateMusicGroupPaymentCalenderStatus() {
 		Date date = new Date();

+ 12 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSchoolTermCourseDetailServiceImpl.java

@@ -168,7 +168,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 				Map<Integer,String> userMap = new HashMap<>(1);
 				userMap.put(musicGroup.getEducationalTeacherId(),educationPhoneMap.get(musicGroup.getEducationalTeacherId()));
 				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
-						MessageTypeEnum.REMIND_EDUCATION_COURSE_TIME,
+						MessageTypeEnum.SYSTEM_REMIND_EDUCATION_COURSE_TIME,
 						userMap,
 						null,
 						0,
@@ -178,7 +178,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 				Map<Integer,String> userMap1 = new HashMap<>(1);
 				userMap1.put(musicGroup.getEducationalTeacherId(),musicGroup.getEducationalTeacherId().toString());
 				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
-						MessageTypeEnum.REMIND_EDUCATION_COURSE_TIME,
+						MessageTypeEnum.SYSTEM_REMIND_EDUCATION_COURSE_TIME,
 						userMap1,
 						null,
 						0,
@@ -207,7 +207,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 					null,
 					0,
 					null,
-					null);
+					null,pushMemberRenew);
 
 			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
 					MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
@@ -215,13 +215,18 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 					null,
 					0,
 					null,
-					"STUDENT");
+					"STUDENT",pushMemberRenew);
 		}
-		//会员结束前15天提醒学员续费(退团提醒)
+		//会员结束前5天提醒学员续费(退团提醒)
 		String pushMemberRenewQuit = sysConfigDao.findConfigValue(SysConfigService.PUSH_MEMBER_RENEW_QUIT);
 		if(StringUtils.isEmpty(pushMemberRenewQuit)){
 			pushMemberRenewQuit = "5";
 		}
+		//会员结束后3天学员自动退团
+		String memberEndAutoQuitMusic = sysConfigDao.findConfigValue(SysConfigService.MEMBER_END_AUTO_QUIT_MUSIC);
+		if(StringUtils.isEmpty(memberEndAutoQuitMusic)){
+			memberEndAutoQuitMusic = "3";
+		}
 		List<Integer> studentIdList = studentDao.queryPushMemberRenew(pushMemberRenewQuit);
 		if(studentIdList.size() > 0){
 			Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(studentIdList,",")));
@@ -237,7 +242,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 					null,
 					0,
 					null,
-					null);
+					null,pushMemberRenewQuit,memberEndAutoQuitMusic);
 
 			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
 					MessageTypeEnum.STUDENT_MEMBER_RENEW_QUIT_MESSAGE,
@@ -245,7 +250,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 					null,
 					0,
 					null,
-					"STUDENT");
+					"STUDENT",pushMemberRenewQuit,memberEndAutoQuitMusic);
 		}
 	}
 

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -3223,4 +3223,18 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         return musicGroupDao.findByCooperationId(cooperationId);
     }
 
+    @Override
+    public void memberEndAutoQuitMusic() {
+        String memberEndAutoQuitMusic = sysConfigDao.findConfigValue(SysConfigService.MEMBER_END_AUTO_QUIT_MUSIC);
+        if(StringUtils.isEmpty(memberEndAutoQuitMusic)){
+            memberEndAutoQuitMusic = "3";
+        }
+        //获取所有在会员团,但是没有会员,并且没有待生效的学员
+        List<StudentRegistration> registrations = studentRegistrationDao.queryMemberEndAutoQuitMusic(memberEndAutoQuitMusic);
+        if(registrations.size() > 0){
+//            registrations.forEach(e->{
+//                directQuitMusicGroup(e.getMusicGroupId(),e.getUserId(),"会员到期自动退团",);
+//            });
+        }
+    }
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java

@@ -1016,4 +1016,9 @@ public class StudentServeServiceImpl implements StudentServeService {
             studentDao.updateServiceTag(studentIds,0);
         }
     }
+
+    @Override
+    public void cleanStudentMember() {
+        studentDao.cleanStudentMember();
+    }
 }

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

@@ -3801,7 +3801,7 @@
         <foreach collection="ids" item="id" open="(" close=")" separator=",">
             #{id}
         </foreach>
-        AND group_type_='MUSIC' AND DATE_FORMAT(NOW(),'%Y-%m-%d') >= class_date_
+        AND group_type_='MUSIC' AND DATE_FORMAT(NOW(),'%Y-%m-%d') >= class_date_ AND member_flag_ = 1
         GROUP BY music_group_id_
     </select>
 

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

@@ -752,5 +752,8 @@
             #{userId}
         </foreach>
     </update>
-
+    <update id="cleanStudentMember">
+        UPDATE student SET member_rank_setting_id_ = NULL,membership_start_time_ = NULL,membership_end_time_ = NULL
+        WHERE DATEDIFF(NOW(),membership_end_time_) > 0
+    </update>
 </mapper>

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

@@ -1534,4 +1534,12 @@
           AND paying_status_ = 2
           AND music_group_status_ = 'NORMAL'
     </select>
+    <select id="queryMemberEndAutoQuitMusic" resultMap="StudentRegistration">
+        SELECT sr.music_group_id_,sr.user_id_ FROM student_registration sr
+        LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
+        LEFT JOIN student s ON s.user_id_ = sr.user_id_
+        LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = s.user_id_
+        WHERE sr.music_group_status_ != 'QUIT' AND mg.course_view_type_ = 1 AND mg.status_ = 'PROGRESS' AND s.member_rank_setting_id_ IS NULL AND cto.status_ IN (1,2)
+        GROUP BY cto.student_id_ HAVING MIN(cto.status_) != 1 AND DATEDIFF(NOW(),MAX(cto.end_time_)) >= #{memberEndAutoQuitMusic};
+    </select>
 </mapper>

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

@@ -207,4 +207,12 @@ public interface TaskRemoteService {
 	//每天10点推送排课、续费、退团提醒
 	@GetMapping("task/musicSchoolTermPush")
     void musicSchoolTermPush();
+
+	//会员结束后第三天自动退团
+	@GetMapping("task/memberEndAutoQuitMusic")
+    void memberEndAutoQuitMusic();
+
+	//会员到期后清空会员信息
+	@GetMapping("task/cleanStudentMember")
+    void cleanStudentMember();
 }

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

@@ -257,4 +257,14 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
     public void musicSchoolTermPush() {
         logger.error("每天10点推送乐团排课、续费、退团提醒");
     }
+
+	@Override
+	public void memberEndAutoQuitMusic() {
+		logger.error("会员到期自动退团");
+	}
+
+	@Override
+	public void cleanStudentMember() {
+		logger.error("学员会员到期状态更新");
+	}
 }

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/CleanStudentMemberTask.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 CleanStudentMemberTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.cleanStudentMember();
+	}
+}

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/MemberEndAutoQuitMusicTask.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 MemberEndAutoQuitMusicTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.memberEndAutoQuitMusic();
+	}
+}

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

@@ -67,6 +67,14 @@ public class MusicGroupPaymentCalenderController extends BaseController {
         return succeed(map);
     }
 
+    @ApiOperation(value = "待审核的缴费项目撤回")
+    @PostMapping(value = "/revoke")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalender/revoke')")
+    public Object revoke(String batchNo) {
+    	musicGroupPaymentCalenderService.revoke(batchNo);
+        return succeed();
+    }
+
     @ApiOperation(value = "删除乐团缴费日历")
     @PostMapping("/del")
     @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalender/del')")

+ 28 - 14
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -122,6 +122,21 @@ public class TaskController extends BaseController {
 	@Autowired
 	private ImFeignService imFeignService;
 
+	@Autowired
+	private IndexErrDataRecordService indexErrDataRecordService;
+
+	@Autowired
+	private ClassGroupService classGroupService;
+
+	@Autowired
+	private MusicGroupSchoolTermCourseDetailDao musicGroupSchoolTermCourseDetailDao;
+
+	@Autowired
+	private MusicGroupSchoolTermCourseDetailService musicGroupSchoolTermCourseDetailService;
+
+	@Autowired
+	private MusicGroupService musicGroupService;
+
 	@GetMapping(value = "/syncImHistoryMessageTask")
 	// 同步即时通讯聊天记录
 	public void syncImHistoryMessageTask(String date) throws Exception {
@@ -149,18 +164,6 @@ public class TaskController extends BaseController {
 		}
 	}
 
-	@Autowired
-	private IndexErrDataRecordService indexErrDataRecordService;
-
-	@Autowired
-	private ClassGroupService classGroupService;
-
-	@Autowired
-	private MusicGroupSchoolTermCourseDetailDao musicGroupSchoolTermCourseDetailDao;
-
-	@Autowired
-	private MusicGroupSchoolTermCourseDetailService musicGroupSchoolTermCourseDetailService;
-
 	@GetMapping(value = "/autoAffirmReceiveTask")
 	// 自动确认收货
 	public void affirmReceive(){
@@ -474,8 +477,19 @@ public class TaskController extends BaseController {
 
 	@ApiOperation("每天10点推送排课、续费、退团提醒")
 	@GetMapping(value = "/musicSchoolTermPush")
-	public HttpResponseResult musicSchoolTermPush() {
+	public void musicSchoolTermPush() {
 		musicGroupSchoolTermCourseDetailService.musicSchoolTermPush();
-		return succeed();
+	}
+
+	@ApiOperation("会员结束后第三天自动退团")
+	@GetMapping(value = "/memberEndAutoQuitMusic")
+	public void memberEndAutoQuitMusic() {
+		musicGroupService.memberEndAutoQuitMusic();
+	}
+
+	@ApiOperation("会员到期后清空会员信息")
+	@GetMapping(value = "/cleanStudentMember")
+	public void cleanStudentMember() {
+		studentServeService.cleanStudentMember();
 	}
 }