Browse Source

系统收费优化

zouxuan 4 years ago
parent
commit
fd015a8eda

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

@@ -239,6 +239,13 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
     List<Integer> queryPushMemberRenew(String pushMemberRenew);
 
     /**
+     * 会员结束前15天自动创建乐团缴费
+     * @param pushMemberRenew
+     * @return
+     */
+    List<Map<String,String>> queryAutoCreateStudentMap(String pushMemberRenew);
+
+    /**
      * 清空学员会员
      */
     void cleanStudentMember();

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

@@ -1,7 +1,9 @@
 package com.ym.mec.biz.service.impl;
 
+import com.sun.javafx.collections.MappingChange;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
@@ -17,17 +19,19 @@ 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.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 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.math.BigDecimal;
+import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum.AUDITING;
+
 @Service
 public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl<Integer, MusicGroupSchoolTermCourseDetail>  implements MusicGroupSchoolTermCourseDetailService {
 	
@@ -55,6 +59,12 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 	private StudentDao studentDao;
 	@Autowired
 	private MemberRankSettingDao memberRankSettingDao;
+	@Autowired
+	private MemberFeeSettingDao memberFeeSettingDao;
+	@Autowired
+	private OrganizationDao organizationDao;
+
+	private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
 	@Override
 	public BaseDAO<Integer, MusicGroupSchoolTermCourseDetail> getDAO() {
@@ -196,9 +206,34 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 		if(StringUtils.isEmpty(autoCreateMemberRenew)){
 			autoCreateMemberRenew = "15";
 		}
-		List<Integer> studentIds = studentDao.queryPushMemberRenew(autoCreateMemberRenew);
-		if(studentIds.size() > 0){
-
+		Date date = new Date();
+		Map<String,String> studentMusicMap = MapUtil.convertMybatisMap(studentDao.queryAutoCreateStudentMap(autoCreateMemberRenew));
+		if(studentMusicMap.size() > 0){
+			for (String musicGroupId : studentMusicMap.keySet()) {
+				MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+				//创建缴费项目
+				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);
+				//会员价格是否变动
+				MemberFeeSetting memberFee = memberFeeSettingDao.findByRankIdAndOrganId(musicGroup.getOrganId(), memberRankSetting.getId());
+				if(memberFee == null){
+					Organization organization = organizationDao.get(musicGroup.getOrganId());
+					logger.error("自动创建缴费项目失败,{} 分部会员收费标准未配置",organization.getName());
+					continue;
+				}
+				musicGroupPaymentCalenderDto.setMemberPaymentAmount(memberFee.getCurrentHalfYearFee().setScale(0, BigDecimal.ROUND_HALF_UP));
+				List<MusicGroupPaymentCalenderDto.MusicGroupPaymentDateRange> musicGroupPaymentDateRangeList = new ArrayList<MusicGroupPaymentCalenderDto.MusicGroupPaymentDateRange>();
+				MusicGroupPaymentCalenderDto.MusicGroupPaymentDateRange range = new MusicGroupPaymentCalenderDto().new MusicGroupPaymentDateRange();
+				range.setStartPaymentDate(date);
+				range.setDeadlinePaymentDate(DateUtil.addMonths(date,1));
+				musicGroupPaymentDateRangeList.add(range);
+			}
 		}
 
 		//会员结束前15天提醒学员续费

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -761,6 +761,12 @@
         GROUP BY s.user_id_ HAVING (MAX(cto.id_) IS NULL OR MIN(cto.status_) > 1)
         AND DATEDIFF(MAX(cto.end_time_),NOW()) = #{pushMemberRenew}
     </select>
+    <select id="queryAutoCreateStudentMap" resultType="java.util.Map">
+        SELECT GROUP_CONCAT(s.user_id_) 'value',s.member_music_group_id_ 'key' FROM student s
+        LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = s.user_id_ AND cto.status_ = 1 AND cto.music_group_id_ IS NOT NULL
+        WHERE DATEDIFF(s.music_membership_end_time_,NOW()) = #{pushMemberRenew} AND cto.id_ IS NULL
+        GROUP BY s.member_music_group_id_
+    </select>
 
     <update id="updateGrade"><![CDATA[
         UPDATE student SET current_grade_num_=current_grade_num_+1