zouxuan 4 vuotta sitten
vanhempi
commit
48a6b68ea6

+ 12 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDetailDao.java

@@ -38,7 +38,7 @@ public interface MusicGroupPaymentCalenderDetailDao extends BaseDAO<Long, MusicG
 	 * @param musicGroupPaymentCalenderId
 	 * @return
 	 */
-	List<MusicGroupPaymentCalenderDetail> queryByCalenderId(Long musicGroupPaymentCalenderId);
+	List<MusicGroupPaymentCalenderDetail> queryByCalenderId(@Param("musicGroupPaymentCalenderId") Long musicGroupPaymentCalenderId, @Param("paymentStatus") String paymentStatus);
 
 	/**
 	 * 根据声部获取乐团下完成缴费的学员
@@ -187,4 +187,15 @@ public interface MusicGroupPaymentCalenderDetailDao extends BaseDAO<Long, MusicG
 	 * @return com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail
 	 */
 	MusicGroupPaymentCalenderDetail findByCalenderIdAndUserId(@Param("calenderId") Long calenderId, @Param("userId") Integer userId);
+
+	/**
+	 * @describe 根据订单编号获取缴费详情
+	 * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+	 * @author zouxuan
+	 * @date 2020/11/3
+	 * @time 15:41
+	 * @param orderNo:
+	 * @return com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail
+	 */
+	MusicGroupPaymentCalenderDetail findByOrderNo(@Param("orderNo") String orderNo);
 }

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

@@ -5,6 +5,7 @@ import java.util.List;
 import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDetailDto;
 import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDto;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.biz.dal.page.MusicGroupPaymentCalenderQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
@@ -123,4 +124,16 @@ public interface MusicGroupPaymentCalenderService extends BaseService<Long, Musi
 	 * @return
 	 */
 	MusicGroupPaymentCalender findByMusicGroupRegCalender(String musicGroupId);
+
+	/**
+	 * @describe 缴费成功后更新calender
+	 * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+	 * @author zouxuan
+	 * @date 2020/11/3
+	 * @time 17:04
+	 * @param detailId:
+	 * @param userId:
+	 * @return com.ym.mec.biz.dal.entity.MusicGroupStudentFee
+	 */
+    MusicGroupStudentFee updateCalender(Long detailId, Integer userId);
 }

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

@@ -480,7 +480,6 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				}
 				Map<Integer, String> push = new HashMap<>(1);
 				push.put(detail.getUserId(), detail.getUserId() + "");
-				// MusicGroup musicGroup = musicGroupDao.get(detail.getMusicGroupId());
 				String baseUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
 				String memo = "4?" + baseUrl + "/#/renew?musicGroupId=" + detail.getMusicGroupId();
 				// 发送续费通知
@@ -517,7 +516,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				updateMusicGroupPaymentCalenderList.add(mgpc);
 
 				// 0元学生改成“已缴费”
-				List<MusicGroupPaymentCalenderDetail> list = musicGroupPaymentCalenderDetailDao.queryByCalenderId(mgpc.getId());
+				List<MusicGroupPaymentCalenderDetail> list = musicGroupPaymentCalenderDetailDao.queryByCalenderId(mgpc.getId(),PaymentStatus.NON_PAYMENT.getCode());
 				for (MusicGroupPaymentCalenderDetail mgpcd : list) {
 					if (mgpcd.getExpectAmount().doubleValue() == 0) {
 						mgpcd.setActualAmount(BigDecimal.ZERO);
@@ -539,6 +538,11 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				}
 
 			} else if (mgpc.getStartPaymentDate() != null && date.after(mgpc.getStartPaymentDate()) && mgpc.getStatus() == PaymentCalenderStatusEnum.NO) {
+				MusicGroup musicGroup = musicGroupDao.get(mgpc.getMusicGroupId());
+				//如果乐团还在审核中
+				if(musicGroup.getStatus() == MusicGroupStatusEnum.DRAFT || musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT|| musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT_FAILED){
+					continue;
+				}
 				// “未开始”更新至“进行中”
 				mgpc.setUpdateTime(date);
 				mgpc.setStatus(PaymentCalenderStatusEnum.OPEN);
@@ -570,7 +574,6 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 					for (Integer userId : studentIds) {
 						push.put(userId, userId + "");
 					}
-					MusicGroup musicGroup = musicGroupDao.get(mgpc.getMusicGroupId());
 					String baseUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
 					String memo = "4?" + baseUrl + "/#/renew?musicGroupId=" + musicGroup.getId();
 					// 发送续费通知
@@ -650,7 +653,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			calender.setStatus(PaymentCalenderStatusEnum.OPEN);
 			// 修改Fee缴费状态为未缴费
 			musicGroupStudentFeeDao.updatePaymentStatus(calender.getId(), "NON_PAYMENT");
-			List<MusicGroupPaymentCalenderDetail> details = musicGroupPaymentCalenderDetailDao.queryByCalenderId(calender.getId());
+			List<MusicGroupPaymentCalenderDetail> details = musicGroupPaymentCalenderDetailDao.queryByCalenderId(calender.getId(),null);
 			Set<Integer> studentIds = details.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
 			if (studentIds.size() > 0) {
 				Map<Integer, String> push = new HashMap<>();
@@ -684,7 +687,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			throw new BizException("删除失败,只有“拒绝”或“未开启缴费”状态才能删除");
 		}
 
-		List<MusicGroupPaymentCalenderDetail> musicGroupPaymentCalenderDetailList = musicGroupPaymentCalenderDetailDao.queryByCalenderId(id);
+		List<MusicGroupPaymentCalenderDetail> musicGroupPaymentCalenderDetailList = musicGroupPaymentCalenderDetailDao.queryByCalenderId(id,null);
 		if (musicGroupPaymentCalenderDetailList != null && musicGroupPaymentCalenderDetailList.size() > 0) {
 			List<MusicGroupPaymentCalenderDetail> paidList = musicGroupPaymentCalenderDetailList.stream()
 					.filter(MusicGroupPaymentCalenderDetail -> MusicGroupPaymentCalenderDetail.getPaymentStatus() != PaymentStatus.NON_PAYMENT)
@@ -747,4 +750,29 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		return musicGroupPaymentCalenderDao.findByMusicGroupRegCalender(musicGroupId);
 	}
 
+	@Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
+	public MusicGroupStudentFee updateCalender(Long calenderDetailId,Integer userId){
+		Date date = new Date();
+		MusicGroupPaymentCalenderDetail calenderDetail = musicGroupPaymentCalenderDetailDao.get(calenderDetailId);
+		MusicGroupPaymentCalender calender = this.get(calenderDetail.getMusicGroupPaymentCalenderId());
+		MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, calender.getMusicGroupId());
+		if(calender.getIsGiveMusicNetwork()){
+			//赠送网管课
+			musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
+		}
+		//更新学生的缴费记录状态
+		calenderDetail.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
+		calenderDetail.setActualAmount(calenderDetail.getExpectAmount());
+		calenderDetail.setPayTime(date);
+		calenderDetail.setUpdateTime(date);
+		musicGroupPaymentCalenderDetailDao.update(calenderDetail);
+
+		//更新实际缴费人数
+		Integer actualNum = calender.getActualNum() == null ? 0 : calender.getActualNum();
+		calender.setActualNum(actualNum + 1);
+		calender.setUpdateTime(date);
+		musicGroupPaymentCalenderDao.update(calender);
+		return musicGroupStudentFee;
+	}
+
 }

+ 4 - 25
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -623,6 +623,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         studentPaymentOrder.setVersion(studentPaymentOrder.getVersion() + 1);
 
         if (amount.compareTo(BigDecimal.ZERO) == 0) {
+            //如果赠送网管课
             studentPaymentRouteOrderService.addRouteOrder(orderNo, musicGroup.getOrganId(), balance);
             Map<String, String> notifyMap = new HashMap<>();
             notifyMap.put("tradeState", "1");
@@ -1840,12 +1841,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         Integer userId = studentPaymentOrder.getUserId();
         String musicGroupId = studentPaymentOrder.getMusicGroupId();
 
-        //更新下次续费时间
-        MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
-
-        if (musicGroupStudentFee == null) {
-            throw new BizException("系统数据异常,找不到学员预缴费信息");
-        }
         Date date = new Date();
         StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
         Map<Integer, String> yimei = new HashMap<>(1);
@@ -1853,12 +1848,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         push.put(userId, userId.toString());
         yimei.put(userId, studentRegistration.getParentsPhone());
         if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
-            MusicGroupPaymentCalenderDetail userLastCalenderDetail = musicGroupPaymentCalenderDetailDao.getUserLastCalenderDetail(musicGroupId, userId);
-            if (userLastCalenderDetail == null) {
-                throw new BizException("学生没有续费中的记录");
-            }
-
-            MusicGroupPaymentCalender musicGroupPaymentCalender = musicGroupPaymentCalenderDao.get(userLastCalenderDetail.getMusicGroupPaymentCalenderId());
+            //当前乐团报名是否赠送乐团网管课
+            MusicGroupPaymentCalenderDetail calenderDetail = musicGroupPaymentCalenderDetailDao.findByOrderNo(studentPaymentOrder.getOrderNo());
+            MusicGroupStudentFee musicGroupStudentFee = musicGroupPaymentCalenderService.updateCalender(calenderDetail.getId(),studentRegistration.getUserId());
 
             musicGroupStudentFee.setUpdateTime(date);
             musicGroupStudentFee.setLatestPaidTime(date);
@@ -1871,19 +1863,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 //            musicGroupStudentFee.setNextPaymentDate(musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId, musicGroupStudentFee.getNextPaymentDate(), musicGroupStudentFee));
             musicGroupStudentFeeDao.update(musicGroupStudentFee);
 
-            //更新学生的缴费记录状态
-            userLastCalenderDetail.setPaymentStatus(PaymentStatus.PAID_COMPLETED);
-            userLastCalenderDetail.setActualAmount(userLastCalenderDetail.getExpectAmount());
-            userLastCalenderDetail.setPayTime(date);
-            userLastCalenderDetail.setUpdateTime(date);
-            musicGroupPaymentCalenderDetailDao.update(userLastCalenderDetail);
-
-            //更新实际缴费人数
-            Integer actualNum = musicGroupPaymentCalender.getActualNum() == null ? 0 : musicGroupPaymentCalender.getActualNum();
-            musicGroupPaymentCalender.setActualNum(actualNum + 1);
-            musicGroupPaymentCalender.setUpdateTime(date);
-            musicGroupPaymentCalenderDao.update(musicGroupPaymentCalender);
-
             //插入交易明细
             SysUserCashAccount cashAccount = sysUserCashAccountService.get(userId);
             BigDecimal amount = studentPaymentOrder.getActualAmount();

+ 50 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -22,16 +22,14 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.thirdparty.eseal.ESealPlugin;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
-import com.ym.mec.thirdparty.user.realname.RealnameAuthenticationPluginContext;
-import com.ym.mec.thirdparty.user.realname.provider.LinkfaceRealnameAuthenticationPlugin;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.http.HttpUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
@@ -106,9 +104,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Autowired
     private GoodsDao goodsDao;
     @Autowired
-    private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
-    @Autowired
     private MusicGroupPaymentCalenderDetailDao musicGroupPaymentCalenderDetailDao;
+    @Autowired
+    private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
 
     @Override
     public BaseDAO<Long, StudentRegistration> getDAO() {
@@ -840,6 +838,30 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         return classGroupStuList;
     }
 
+    @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
+    public void updateCalender(Long calenderDetailId,Integer userId){
+        Date date = new Date();
+        MusicGroupPaymentCalenderDetail calenderDetail = musicGroupPaymentCalenderDetailDao.get(calenderDetailId);
+        MusicGroupPaymentCalender calender = musicGroupPaymentCalenderService.get(calenderDetail.getMusicGroupPaymentCalenderId());
+        MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, calender.getMusicGroupId());
+        if(calender.getIsGiveMusicNetwork()){
+            //赠送网管课
+            musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
+        }
+        //更新学生的缴费记录状态
+        calenderDetail.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
+        calenderDetail.setActualAmount(calenderDetail.getExpectAmount());
+        calenderDetail.setPayTime(date);
+        calenderDetail.setUpdateTime(date);
+        musicGroupPaymentCalenderDetailDao.update(calenderDetail);
+
+        //更新实际缴费人数
+        Integer actualNum = calender.getActualNum() == null ? 0 : calender.getActualNum();
+        calender.setActualNum(actualNum + 1);
+        calender.setUpdateTime(date);
+        musicGroupPaymentCalenderDao.update(calender);
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public StudentPaymentOrder updateApplyOrder(StudentPaymentOrder studentPaymentOrder) throws Exception {
@@ -859,7 +881,6 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
 
         if (studentPaymentOrder.getStatus().equals(DealStatusEnum.SUCCESS)) {
-
             MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
 
             if (studentRegistration.getTemporaryCourseFee() != null) {
@@ -869,24 +890,42 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
             studentRegistrationDao.update(studentRegistration);
 
+            //当前乐团报名是否赠送乐团网管课
+
+            MusicGroupPaymentCalenderDetail calenderDetail = musicGroupPaymentCalenderDetailDao.findByOrderNo(studentPaymentOrder.getOrderNo());
+            MusicGroupPaymentCalender calender = musicGroupPaymentCalenderService.get(calenderDetail.getMusicGroupPaymentCalenderId());
+            MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(studentRegistration.getUserId(), studentRegistration.getMusicGroupId());
+            if(calender.getIsGiveMusicNetwork()){
+                //赠送网管课
+                musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
+            }
+            //更新学生的缴费记录状态
+            calenderDetail.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
+            calenderDetail.setActualAmount(calenderDetail.getExpectAmount());
+            calenderDetail.setPayTime(nowDate);
+            calenderDetail.setUpdateTime(nowDate);
+            musicGroupPaymentCalenderDetailDao.update(calenderDetail);
+
+            //更新实际缴费人数
+            Integer actualNum = calender.getActualNum() == null ? 0 : calender.getActualNum();
+            calender.setActualNum(actualNum + 1);
+            calender.setUpdateTime(nowDate);
+            musicGroupPaymentCalenderDao.update(calender);
+
             //进行中乐团加入学生缴费
             if (studentRegistration.getTemporaryCourseFee() != null) {
                 //关闭待支付订单
                 StudentPaymentOrder waitPayOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(studentRegistration.getUserId(), studentRegistration.getMusicGroupId(), DealStatusEnum.WAIT_PAY);
                 waitPayOrder.setStatus(DealStatusEnum.CLOSE);
                 studentPaymentOrderService.update(waitPayOrder);
-                MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(studentRegistration.getUserId(), studentRegistration.getMusicGroupId());
                 musicGroupStudentFee.setLatestPaidTime(nowDate);
                 musicGroupStudentFee.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
                 musicGroupStudentFee.setTemporaryCourseFee(BigDecimal.ZERO);
-                /*if (musicGroup.getFeeType() != null && musicGroup.getFeeType() != MusicGroupPaymentCalender.FeeType.OFFLINE) {
-                    musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
-                }*/
                 musicGroupStudentFee.setUpdateTime(nowDate);
-                musicGroupStudentFeeDao.update(musicGroupStudentFee);
                 //添加学生
                 //classGroupStudentMapperService.addStudents(waitPayOrder.getClassGroupId(), studentRegistration.getUserId().toString(), GroupType.MUSIC);
             }
+            musicGroupStudentFeeDao.update(musicGroupStudentFee);
 
             //插入交易明细
             BigDecimal amount = studentPaymentOrder.getActualAmount();

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

@@ -251,7 +251,10 @@
 	</select>
 	
 	<select id="queryByCalenderId" resultMap="MusicGroupPaymentCalenderDetail">
-		SELECT * FROM music_group_payment_calender_detail where music_group_payment_calender_id_ = #{calenderId}
+		SELECT * FROM music_group_payment_calender_detail WHERE music_group_payment_calender_id_ = #{calenderId}
+		<if test="paymentStatus != null">
+			AND psyment_status_ = #{paymentStatus}
+		</if>
 	</select>
     <select id="findMusicGroupStudentWithSubject" resultType="com.ym.mec.biz.dal.dto.SimpleUserDto">
 		SELECT DISTINCT su.id_ userId,su.username_ userName, su.avatar_ avatar, su.phone_ phone
@@ -363,4 +366,7 @@
 	<select id="findByCalenderIdAndUserId" resultMap="MusicGroupPaymentCalenderDetail">
 		SELECT * FROM music_group_payment_calender_detail WHERE music_group_payment_calender_id_ = #{calenderId} AND user_id_ = #{userId} LIMIT 1
 	</select>
+	<select id="findByOrderNo" resultMap="MusicGroupPaymentCalenderDetail">
+		SELECT * FROM music_group_payment_calender_detail WHERE payment_order_id_ = #{orderNo} LIMIT 1
+	</select>
 </mapper>

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

@@ -240,7 +240,7 @@
         SELECT * FROM music_group_payment_calender mgpc
         <where>
         	<if test="status != null">
-        		payment_status_ in
+        		status_ in
         		<foreach collection="status" item="item" open="(" close=")" separator=",">
 		            #{item,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 		        </foreach>

+ 0 - 1
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -123,7 +123,6 @@ public class MusicGroupController extends BaseController {
                 return succeed(musicGroupSubjectPlanService.getStudentGoodsAndInfo(musicGroupId, subjectId, studentRegistration));
             }
         }
-
         return succeed(musicGroupSubjectPlanService.getSubjectGoodsAndInfo(musicGroupId, subjectId));
     }