Quellcode durchsuchen

Merge remote-tracking branch 'origin/system_fee' into system_fee

zouxuan vor 4 Jahren
Ursprung
Commit
672cba630c

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java

@@ -2,11 +2,19 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.common.dal.BaseDAO;
+
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
 public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
+	
+	/**
+	 * 根据studentPaymentOrder表id查询对象
+	 * @param orderId
+	 * @return
+	 */
+	CloudTeacherOrder queryByOrderId(Long orderId);
 
     /**
      * 获取未生效的云教练订单

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CloudTeacherOrderService.java

@@ -61,5 +61,12 @@ public interface CloudTeacherOrderService extends BaseService<Long, CloudTeacher
      * @return
      */
     Boolean quitCloudTeacherOrder(CloudTeacherOrder order, BigDecimal refundAmount);
+	
+	/**
+	 * 根据studentPaymentOrder表id查询对象
+	 * @param orderId
+	 * @return
+	 */
+	CloudTeacherOrder queryByOrderId(Long orderId);
 
 }

+ 3 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java

@@ -3,10 +3,9 @@ package com.ym.mec.biz.service;
 import java.text.ParseException;
 
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.dal.enums.GradeTypeEnum;
-import org.springframework.http.ResponseEntity;
-
 import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.enums.GradeTypeEnum;
+import com.ym.mec.biz.dal.enums.PeriodEnum;
 import com.ym.mec.biz.dal.page.StudentQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
@@ -70,5 +69,5 @@ public interface StudentService extends BaseService<Integer, Student> {
     /**
      * 更新学员会员信息
      */
-    void updateMemberRank(Integer userId,Integer rankSettingId);
+    void updateMemberRank(Integer userId, Integer rankSettingId, PeriodEnum periodEnum, int quantityPerPeriod);
 }

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

@@ -8,6 +8,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.date.DateUtil;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -166,4 +167,9 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         }
         return true;
     }
+
+	@Override
+	public CloudTeacherOrder queryByOrderId(Long orderId) {
+		return cloudTeacherOrderDao.queryByOrderId(orderId);
+	}
 }

+ 56 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -17,6 +17,7 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.MemberRankPrivilegesDao;
 import com.ym.mec.biz.dal.dao.MemberRankSettingDao;
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.biz.dal.entity.MemberFeeSetting;
 import com.ym.mec.biz.dal.entity.MemberRankPrivileges;
 import com.ym.mec.biz.dal.entity.MemberRankSetting;
@@ -29,6 +30,7 @@ import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.biz.dal.enums.PeriodEnum;
 import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
+import com.ym.mec.biz.service.CloudTeacherOrderService;
 import com.ym.mec.biz.service.ContractService;
 import com.ym.mec.biz.service.MemberFeeSettingService;
 import com.ym.mec.biz.service.MemberRankSettingService;
@@ -65,10 +67,13 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 
 	@Autowired
 	private ContractService contractService;
-	
+
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
 
+	@Autowired
+	private CloudTeacherOrderService cloudTeacherOrderService;
+
 	private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
 	@Override
@@ -121,7 +126,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 		if (student == null) {
 			throw new BizException("非法访问");
 		}
-		
+
 		SysUser user = sysUserFeignService.queryUserById(userId);
 
 		Integer organId = user.getOrganId();
@@ -140,20 +145,30 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 			throw new BizException("分部会员价格出现异常");
 		}
 
+		CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
+
 		BigDecimal actualAmount = BigDecimal.ZERO;
 
 		switch (periodEnum) {
 		case DAY:
 			actualAmount = memberFeeSetting.getCurrentDayFee();
+			cloudTeacherOrder.setType(1);
+			cloudTeacherOrder.setTime(1);
 			break;
 		case MONTH:
 			actualAmount = memberFeeSetting.getCurrentMonthFee();
+			cloudTeacherOrder.setType(2);
+			cloudTeacherOrder.setTime(1);
 			break;
 		case YEAR_HALF:
 			actualAmount = memberFeeSetting.getCurrentHalfYearFee();
+			cloudTeacherOrder.setType(2);
+			cloudTeacherOrder.setTime(6);
 			break;
 		case YEAR:
 			actualAmount = memberFeeSetting.getCurrentYearFee();
+			cloudTeacherOrder.setType(3);
+			cloudTeacherOrder.setTime(1);
 			break;
 
 		default:
@@ -198,7 +213,6 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 				studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
 				sysUserCashAccountService.updateBalance(userId, amount.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "购买会员");
 
-				orderCallback(studentPaymentOrder);
 			} else {
 				if (userCashAccount.getBalance().doubleValue() > 0) {
 					sysUserCashAccountService.updateBalance(userId, userCashAccount.getBalance().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "购买会员");
@@ -208,7 +222,22 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 			}
 		}
 
-		return studentPaymentOrderService.createOrder(studentPaymentOrder, null, "BUY_MEMBER");
+		Map result = studentPaymentOrderService.createOrder(studentPaymentOrder, null, "BUY_MEMBER");
+
+		// 订单明细
+		cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
+		cloudTeacherOrder.setStudentId(studentPaymentOrder.getUserId());
+		cloudTeacherOrder.setLevel(memberRankId);
+		cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
+		cloudTeacherOrder.setStatus(0);
+		cloudTeacherOrder.setOrderId(studentPaymentOrder.getId());
+		cloudTeacherOrderService.insert(cloudTeacherOrder);
+
+		if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
+			orderCallback(studentPaymentOrder);
+		}
+
+		return result;
 	}
 
 	@Override
@@ -236,8 +265,30 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 
 		// 支付成功
 		if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
+			// 查询会员订单信息
+			CloudTeacherOrder cloudTeacherOrder = cloudTeacherOrderService.queryByOrderId(studentPaymentOrder.getId());
+			cloudTeacherOrder.setStatus(1);
+			cloudTeacherOrder.setUpdateTime(nowDate);
+			cloudTeacherOrderService.update(cloudTeacherOrder);
+
+			PeriodEnum periodEnum = PeriodEnum.MONTH;
+			switch (cloudTeacherOrder.getType()) {
+			case 1:
+				periodEnum = PeriodEnum.DAY;
+				break;
+			case 2:
+				periodEnum = PeriodEnum.MONTH;
+				break;
+			case 3:
+				periodEnum = PeriodEnum.YEAR;
+				break;
+
+			default:
+				break;
+			}
+
 			// 添加会员有效时长
-			studentService.updateMemberRank(userId,Integer.parseInt(studentPaymentOrder.getMusicGroupId()));
+			studentService.updateMemberRank(userId, Integer.parseInt(studentPaymentOrder.getMusicGroupId()), periodEnum, cloudTeacherOrder.getTime());
 
 			// 插入交易明细
 			BigDecimal amount = studentPaymentOrder.getActualAmount();

+ 5 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java

@@ -14,6 +14,7 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.MusicArrearageStudentDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
+import com.ym.mec.biz.dal.enums.PeriodEnum;
 import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
 import com.ym.mec.biz.dal.page.ArrearageStudentsQueryInfo;
 import com.ym.mec.biz.event.source.GroupEventSource;
@@ -21,6 +22,7 @@ import com.ym.mec.biz.service.*;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -109,7 +111,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 			}else {
 				// 添加会员有效时长
 				if(calender.getMemberRankSettingId() != null){
-					studentService.updateMemberRank(e.getUserId(),calender.getMemberRankSettingId());
+					studentService.updateMemberRank(e.getUserId(),calender.getMemberRankSettingId(),PeriodEnum.MONTH,6);
 				}
 				calender.setActualNum((calender.getActualNum()==null?0:calender.getActualNum()) + 1);
 				e.setPaymentStatus(PAID_COMPLETED);
@@ -256,7 +258,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 		if (musicGroupPaymentCalenderDetail.getExpectAmount().compareTo(totalPrice) == 0) {
 			// 添加会员有效时长
 			if(calender.getMemberRankSettingId() != null){
-				studentService.updateMemberRank(userId,calender.getMemberRankSettingId());
+				studentService.updateMemberRank(userId,calender.getMemberRankSettingId(),PeriodEnum.MONTH,6);
 			}
 			musicGroupPaymentCalenderDetail.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
 		} else {
@@ -511,7 +513,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 				if (musicGroupPaymentCalenderDetail.getExpectAmount().compareTo(new BigDecimal(0)) == 0) {
 					// 添加会员有效时长
 					if(musicGroupPaymentCalender.getMemberRankSettingId() != null){
-						studentService.updateMemberRank(studentId,musicGroupPaymentCalender.getMemberRankSettingId());
+						studentService.updateMemberRank(studentId,musicGroupPaymentCalender.getMemberRankSettingId(),PeriodEnum.MONTH,6);
 					}
 					musicGroupPaymentCalenderDetail.setPaymentStatus(PaymentStatus.PAID_COMPLETED);
 					paymentNum++;

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

@@ -967,7 +967,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				if(totalPrice.doubleValue() == 0d){
 					// 添加会员有效时长
 					if(musicGroupPaymentCalender.getMemberRankSettingId() != null){
-						studentService.updateMemberRank(Integer.parseInt(studentId),musicGroupPaymentCalender.getMemberRankSettingId());
+						studentService.updateMemberRank(Integer.parseInt(studentId),musicGroupPaymentCalender.getMemberRankSettingId(),PeriodEnum.MONTH,6);
 					}
 					MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(Integer.parseInt(studentId), musicGroupPaymentCalender.getMusicGroupId());
 					if (musicGroupStudentFee != null) {

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

@@ -147,16 +147,10 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 
 		Date date = new Date();
 		studentPaymentOrder.setOrderNo(orderNo);
-		studentPaymentOrder.setExpectAmount(expectAmount);
-		studentPaymentOrder.setActualAmount(cashAmount);
-		studentPaymentOrder.setBalancePaymentAmount(balance);
-		studentPaymentOrder.setStatus(DealStatusEnum.ING);
 		studentPaymentOrder.setCreateTime(date);
 		studentPaymentOrder.setUpdateTime(date);
 		studentPaymentOrder.setVersion(0);
 
-		studentPaymentOrder.setPaymentChannel("BALANCE");
-
 		insert(studentPaymentOrder);
 		
 		if(details != null && details.size() > 0){

+ 54 - 17
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -1,32 +1,44 @@
 package com.ym.mec.biz.service.impl;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
-import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.StudentClassInfoDto;
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.dal.enums.FivePlusGradeEnum;
-import com.ym.mec.biz.dal.enums.GradeTypeEnum;
-import com.ym.mec.biz.dal.enums.SixPlusGradeEnum;
-import com.ym.mec.common.exception.BizException;
-import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.PracticeGroupDao;
+import com.ym.mec.biz.dal.dao.StudentDao;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
+import com.ym.mec.biz.dal.dto.StudentClassInfoDto;
 import com.ym.mec.biz.dal.dto.StudentCourseTimesDto;
 import com.ym.mec.biz.dal.dto.StudentTeacherCourseDto;
+import com.ym.mec.biz.dal.entity.CooperationOrgan;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.enums.FivePlusGradeEnum;
+import com.ym.mec.biz.dal.enums.GradeTypeEnum;
+import com.ym.mec.biz.dal.enums.PeriodEnum;
+import com.ym.mec.biz.dal.enums.SixPlusGradeEnum;
 import com.ym.mec.biz.dal.page.StudentQueryInfo;
 import com.ym.mec.biz.service.StudentService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
 
 @Service
 public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implements StudentService {
@@ -266,22 +278,47 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void updateMemberRank(Integer userId,Integer rankSettingId) {
+    public void updateMemberRank(Integer userId, Integer rankSettingId, PeriodEnum periodEnum, int quantityPerPeriod) {
         // 添加会员有效时长
         Student student = this.get(userId);
         if (student == null) {
             throw new BizException("学员信息不存在");
         }
+        
         Date nowDate = new Date();
-        if (student.getMemberRankSettingId() == null) {
-            student.setMembershipEndTime(DateUtil.addMonths(nowDate, 6));
+        if (student.getMemberRankSettingId() == null || nowDate.after(student.getMembershipEndTime())) {
+        	switch (periodEnum) {
+    		case DAY:
+                student.setMembershipEndTime(DateUtil.addDays(nowDate, quantityPerPeriod));
+    			break;
+    		case MONTH:
+    		case YEAR_HALF:
+                student.setMembershipEndTime(DateUtil.addMonths(nowDate, quantityPerPeriod));
+    			break;
+    		case YEAR:
+                student.setMembershipEndTime(DateUtil.addYears(nowDate, quantityPerPeriod));
+    			break;
+
+    		default:
+    			break;
+    		}
             student.setMembershipStartTime(nowDate);
         } else {
-            if (nowDate.after(student.getMembershipEndTime())) {
-                student.setMembershipEndTime(DateUtil.addMonths(nowDate, 6));
-            } else {
-                student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), 6));
-            }
+        	switch (periodEnum) {
+    		case DAY:
+            	student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), quantityPerPeriod));
+    			break;
+    		case MONTH:
+    		case YEAR_HALF:
+            	student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), quantityPerPeriod));
+    			break;
+    		case YEAR:
+            	student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), quantityPerPeriod));
+    			break;
+
+    		default:
+    			break;
+    		}
         }
         student.setMemberRankSettingId(rankSettingId);
         student.setUpdateTime(nowDate);

+ 5 - 0
mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml

@@ -153,4 +153,9 @@
           AND student_id_ = #{studentId}
           AND status_ IN (1, 2)
     </select>
+
+    <select id="queryByOrderId" resultMap="CloudTeacherOrder">
+        SELECT cto.* FROM cloud_teacher_order cto
+        WHERE order_id_ = #{orderId}
+    </select>
 </mapper>