Browse Source

Merge branch '20221010' of http://git.dayaedu.com/yonge/mec into master_saas

zouxuan 3 years ago
parent
commit
a6e88889d0

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

@@ -24,6 +24,8 @@ public enum IndexErrorType implements BaseEnum<String, IndexErrorType> {
     ATTENDANCE_ERR_STUDENT_NUM("COURSE_TRUANT_STUDENT_NUM", "学员考勤异常"),
     COURSE_TRUANT_STUDENT_NUM("COURSE_TRUANT_STUDENT_NUM", "学员旷课"),
     COURSE_LEAVE_STUDENT_NUM("COURSE_LEAVE_STUDENT_NUM", "学员请假"),
+    COOPERATION_PAYMENT_ERROR("COOPERATION_PAYMENT_ERROR", "合作单位回款异常"),
+    COOPERATION_PAYMENT_ALERT("COOPERATION_PAYMENT_ALERT", "合作单位回款提醒"),
 
     TEACHER_INFO("TEACHER_INFO", "日常行政"),
 

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CooperationRefundQueryInfo.java

@@ -20,6 +20,17 @@ public class CooperationRefundQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "缴费结束时间",required = false)
     private String refundEndDate;
 
+    @ApiModelProperty(value = "异常类型,COOPERATION_PAYMENT_ERROR 回款异常,COOPERATION_PAYMENT_ALERT 回款提醒",required = false)
+    private String errorType;
+
+    public String getErrorType() {
+        return errorType;
+    }
+
+    public void setErrorType(String errorType) {
+        this.errorType = errorType;
+    }
+
     public Integer getCooperationId() {
         return cooperationId;
     }

+ 15 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -63,6 +63,8 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 	private StudentDao studentDao;
 	@Autowired
 	private SysEmployeePositionService employeePositionService;
+	@Autowired
+	private MusicGroupCalenderRefundPeriodDao musicGroupCalenderRefundPeriodDao;
 
 	private static ThreadLocal<Set<Integer>> organIds = new ThreadLocal<Set<Integer>>(){
 		@Override
@@ -732,16 +734,12 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			params.put("tenantId", tenantId);
 			twoChild.add(new IndexErrInfoDto(IndexErrorType.HAS_FREE_COURSE_TIMES, IndexErrorType.HAS_FREE_COURSE_TIMES.getMsg(), musicGroupDao.countHasFreeCourseTimes(params), null));
 
-			//乐团学员会员到期首页提醒
-//			List<StudentRegistration> studentRegistrations = studentRegistrationDao.queryMemberEndAutoQuitMusic(null,educationUserId,organIdsStr);
-//			IndexErrInfoDto noClassMusicGroupStudentInfo = new IndexErrInfoDto();
-//			Set<String> musicGroupIds = studentRegistrations.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
-//			Set<Integer> userIds = studentRegistrations.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
-//			noClassMusicGroupStudentInfo.setErrorType(IndexErrorType.NO_MEMBER_STUDENT_INFO);
-//			noClassMusicGroupStudentInfo.setNum(musicGroupIds.size());
-//			noClassMusicGroupStudentInfo.setNum2(userIds.size());
-//			noClassMusicGroupStudentInfo.setDesc(IndexErrorType.NO_MEMBER_STUDENT_INFO.getMsg());
-//			twoChild.add(noClassMusicGroupStudentInfo);
+			//合作单位回款异常
+			Map<String, Object> params1 = new HashMap<>();
+			params1.put("organId", organIdsStr);
+			params1.put("errorType", "COOPERATION_PAYMENT_ERROR");
+			twoChild.add(new IndexErrInfoDto(IndexErrorType.COOPERATION_PAYMENT_ERROR, IndexErrorType.COOPERATION_PAYMENT_ERROR.getMsg(), musicGroupCalenderRefundPeriodDao.countCoopRefund(params1), null));
+
 			two.setNum(twoChild.stream().mapToInt(IndexErrInfoDto::getNum).sum());
 			two.setResult(twoChild);
 			all.add(two);
@@ -1126,6 +1124,13 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		//乐团剩余时长未排课
 		List<String> musicGroupIds = musicGroupDao.queryHasSubCourseTimes(organIds,tenantId);
 		result.add(new IndexErrInfoDto(IndexErrorType.MUSIC_GROUP_HAS_COURSE_TIMES, IndexErrorType.MUSIC_GROUP_HAS_COURSE_TIMES.getMsg(),musicGroupIds.size(), null));
+
+		//合作单位回款提醒
+		Map<String, Object> params = new HashMap<>();
+		params.put("organId", organIds);
+		params.put("errorType", "COOPERATION_PAYMENT_ALERT");
+		result.add(new IndexErrInfoDto(IndexErrorType.COOPERATION_PAYMENT_ERROR, IndexErrorType.COOPERATION_PAYMENT_ERROR.getMsg(), musicGroupCalenderRefundPeriodDao.countCoopRefund(params), null));
+
 		return result;
 	}
 

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

@@ -396,7 +396,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
         if (musicGroupPaymentCalender.getPaymentType() == MUSIC_APPLY) {
         	// 记录操作日志
             musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "报名缴费项目创建成功", sysUser.getId(), ""));
-            if(musicGroup.getStatus() != MusicGroupStatusEnum.DRAFT){
+            if(musicGroup.getStatus() != MusicGroupStatusEnum.DRAFT && musicGroup.getStatus() != MusicGroupStatusEnum.AUDIT_FAILED){
                 musicGroup.setStatus(MusicGroupStatusEnum.FEE_AUDIT);
             }
             musicGroup.setApplyExpireDate(musicGroupPaymentCalender.getDeadlinePaymentDate());

+ 42 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -791,6 +791,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean finishPreApply(String musicGroupId, boolean isCheckStudentNum) {
+
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null || sysUser.getId() == null) {
+            throw new BizException("请重新登录");
+        }
         MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
         if (musicGroup == null) {
             throw new BizException("乐团信息查询失败");
@@ -812,17 +817,34 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 }
             }
         }
-        musicGroup.setStatus(MusicGroupStatusEnum.APPLY);
+        musicGroup.setStatus(MusicGroupStatusEnum.PAY);
         musicGroup.setUpdateTime(new Date());
         musicGroupDao.update(musicGroup);
 
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null || sysUser.getId() == null) {
-            throw new BizException("请重新登录");
-        }
-
         //记录操作日志
-        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroup.getId(), "预报名完成(预报名 -> 报名中)", sysUser.getId(), ""));
+        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroup.getId(), "预报名完成(预报名 -> 报名缴费中)", sysUser.getId(), ""));
+        
+        studentRegistrationDao.musicGroupOpenPay(musicGroupId, PaymentStatusEnum.OPEN);
+        MusicGroupPaymentCalender regCalender = musicGroupPaymentCalenderDao.findByMusicGroupRegCalender(musicGroupId);
+        if (regCalender != null && regCalender.getPayUserType().equals(MusicGroupPaymentCalender.PayUserType.STUDENT)) {
+            regCalender.setStatus(MusicGroupPaymentCalender.PaymentCalenderStatusEnum.OPEN);
+            regCalender.setUpdateTime(new Date());
+            musicGroupPaymentCalenderDao.update(regCalender);
+        }
+        //三方乐团不发送缴费通知
+        if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN) {
+            List<Map<Integer, String>> mapList = studentRegistrationDao.findMapByMusicGroupId(musicGroupId, 0);
+            //获取所有已报名学员列表
+            HashMap<Integer, String> map = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(mapList)), HashMap.class);
+            if (map != null && map.size() > 0) {
+                String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + musicGroupId;
+//                String serverPhone = sysConfigDao.findConfigValue(SysConfigService.SERVER_PHONE);
+                sysMessageService.batchSendMessage(MessageSender.AWSMS, MessageTypeEnum.SMS_PAYMENT_MESSAGE,
+                        map, null, 0, "", "", musicGroup.getName(), studentApplyUrl);
+            }
+        }
+        sendSeoMessageSource.sendSeoMessage(musicGroup.getOrganId(), new SysUserRoleEnum[]{ORGAN_MANAGER}, null,
+                musicGroup.getEducationalTeacherId(), MessageTypeEnum.BACKSTAGE_ACTION_PAYMENT, musicGroup.getName());
 
         return true;
     }
@@ -1634,6 +1656,19 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             musicGroup.setMemo(memo);
             musicGroup.setUpdateTime(date);
             musicGroupDao.update(musicGroup);
+            
+            List<PaymentCalenderStatusEnum> statusList = new ArrayList<MusicGroupPaymentCalender.PaymentCalenderStatusEnum>();
+            statusList.add(PaymentCalenderStatusEnum.AUDITING);
+            //修改乐团报名缴费项目状态
+            List<MusicGroupPaymentCalender> musicGroupPaymentCalenderList = musicGroupPaymentCalenderDao.queryByPaymentStatus(musicGroupId, statusList, null);
+            
+            musicGroupPaymentCalenderList.forEach(t -> {
+            	t.setStatus(PaymentCalenderStatusEnum.DRAFT);
+            	t.setUpdateTime(date);
+            });
+            
+            musicGroupPaymentCalenderDao.batchUpdate(musicGroupPaymentCalenderList);
+            
         }else if(musicGroup.getStatus() == MusicGroupStatusEnum.FEE_AUDIT){
         	musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "乐团审核失败(费用审核中 -> 费用审核失败)", sysUser.getId(), memo));
         	List<PaymentCalenderStatusEnum> statusList = new ArrayList<MusicGroupPaymentCalender.PaymentCalenderStatusEnum>();

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java

@@ -611,6 +611,14 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
                         .map(StudentPaymentOrderDetail::getPrice)
                         .reduce(BigDecimal.ZERO, BigDecimal::add);
                 BigDecimal expectAmount = studentPaymentOrder.getExpectAmount();
+                
+				BigDecimal organShareProfit = allDetails.stream().filter(o -> o.getType() == ORGAN_SHARE_PROFIT).map(StudentPaymentOrderDetail::getPrice)
+						.reduce(BigDecimal.ZERO, BigDecimal::add);
+				
+				if(organShareProfit != null){
+					expectAmount = expectAmount.subtract(organShareProfit);
+				}
+                
                 //获取比例
                 BigDecimal ratioAmount = musicFee.divide(expectAmount, 6, BigDecimal.ROUND_HALF_UP);
                 //获取分配的减免金额

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

@@ -105,8 +105,16 @@
 	</resultMap>
 	<sql id="queryCoopRefundSql">
 		<where>
+			<if test="errorType != null and errorType != ''">
+				<if test="errorType == 'COOPERATION_PAYMENT_ERROR'">
+					AND TIMESTAMPDIFF(DAY,crp.refund_date_,DATE_FORMAT(NOW(),'%Y-%m-%d')) >= 1
+				</if>
+				<if test="errorType == 'COOPERATION_PAYMENT_ALERT'">
+					AND TIMESTAMPDIFF(DAY,crp.refund_date_,DATE_FORMAT(NOW(),'%Y-%m-%d')) BETWEEN -2 AND 0
+				</if>
+			</if>
 			<if test="organId != null and organId != ''">
-				AND FIND_IN_SET(co.organ_id_,#{organId})
+				AND FIND_IN_SET(crp.organ_id_,#{organId})
 			</if>
 			<if test="search != null and search != ''">
 				AND (co.name_ LIKE CONCAT('%',#{search},'%') OR co.id_ = #{search})