zouxuan преди 4 години
родител
ревизия
572fe91d42

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java

@@ -199,4 +199,15 @@ public interface StudentPaymentOrderService extends BaseService<Long, StudentPay
      * @return
      */
     Integer getOrderIdByMusical(@Param("musicGroupId") String musicGroupId, @Param("studentId") Integer studentId);
+
+    /**
+    * @description: 活动赠送课程,或者会员
+     * @param vipGroupActivityId
+ * @param userId
+ * @param paymentOrderId
+    * @return void
+    * @author zx
+    * @date 2021/10/11 10:36
+    */
+    void activityGive(Integer vipGroupActivityId,Integer userId,Long paymentOrderId);
 }

+ 2 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -3681,15 +3681,15 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             sysCouponCodeService.quit(order.getCouponCodeId());
             return;
         }
-
+        PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(order.getMusicGroupId()));
         if (order.getStatus().equals(DealStatusEnum.SUCCESS)) {
+            studentPaymentOrderService.activityGive(practiceGroup.getVipGroupActivityId(),order.getUserId(),order.getId());
             courseScheduleDao.updateGroupCourseLock(order.getMusicGroupId(), GroupType.PRACTICE, 0);
         } else {
             if (Objects.nonNull(order.getBalancePaymentAmount()) && order.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
                 sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课支付失败,退还余额");
             }
             studentPaymentOrderDao.update(order);
-            PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(order.getMusicGroupId()));
             practiceGroup.setGroupStatus(GroupStatusEnum.CANCEL);
             practiceGroupDao.update(practiceGroup);
             groupService.deleteGroupOtherInfo(order.getMusicGroupId(), GroupType.PRACTICE);
@@ -3731,7 +3731,6 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         sysUserCashAccountDetailService.insert(sysUserIncomeCashAccountDetail);
         sysUserCashAccountDetailService.insert(sysUserExpendCashAccountDetail);
 
-        PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(order.getMusicGroupId()));
         if (practiceGroup.getGroupStatus().equals(GroupStatusEnum.CANCEL)) {
             order.setVersion(order.getVersion() + 1);
             order.setMemo("支付成功,在重新支付时,用户选择取消,金额进入账户");

+ 98 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -13,6 +13,7 @@ import java.util.stream.Collectors;
 
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.service.*;
 
 import org.apache.commons.lang3.StringUtils;
@@ -27,13 +28,6 @@ import com.ym.mec.biz.dal.dto.PageInfoOrder;
 import com.ym.mec.biz.dal.dto.SporadicChargeInfoDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentOrderDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.enums.PayStatus;
-import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.SporadicChargeTypeEnum;
 import com.ym.mec.biz.dal.page.SporadicOrderQueryInfo;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
 import com.ym.mec.common.dal.BaseDAO;
@@ -108,6 +102,10 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     private CloudTeacherOrderService cloudTeacherOrderService;
     @Autowired
     private SysCouponCodeService sysCouponCodeService;
+    @Autowired
+    private VipGroupActivityDao vipGroupActivityDao;
+    @Autowired
+    private StudentService studentService;
 
     @Override
     public BaseDAO<Long, StudentPaymentOrder> getDAO() {
@@ -712,4 +710,97 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     public Integer getOrderIdByMusical(String musicGroupId, Integer studentId) {
         return studentPaymentOrderDao.getOrderIdByMusical(musicGroupId,studentId);
     }
+
+    @Override
+    public void activityGive(Integer vipGroupActivityId, Integer userId, Long paymentOrderId) {
+        if(vipGroupActivityId != null){
+            ActivityUserMapper activityUserMapper = new ActivityUserMapper();
+            VipGroupActivity activity = vipGroupActivityDao.get(vipGroupActivityId);
+            //是否赠送课程
+            if(activity.getGiveCourseNum() > 0){
+                if(activity.getGiveCourseType().equals("VIP")){
+                    activityUserMapper.setGiveVipFlag(1);
+                }else {
+                    activityUserMapper.setGivePracticeFlag(1);
+                }
+            }
+            //是否赠送会员(会员立即生效)
+            if(activity.getMemberTime() > 0){
+                Date now = new Date();
+                // 查询会员订单信息
+                CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
+                cloudTeacherOrder.setStatus(2);
+                cloudTeacherOrder.setUpdateTime(now);
+                cloudTeacherOrder.setAmount(BigDecimal.ZERO);
+                cloudTeacherOrder.setOrderId(paymentOrderId);
+                cloudTeacherOrder.setRemark("购买vip活动赠送会员");
+                cloudTeacherOrder.setLevel(activity.getGiveMemberRankId());
+                cloudTeacherOrder.setStudentId(userId);
+                cloudTeacherOrder.setType(2);
+                PeriodEnum periodEnum = activity.getGivePeriodEnum();
+                switch (periodEnum){
+                    case DAY:
+                        cloudTeacherOrder.setType(1);
+                        break;
+                    case MONTH:
+                    case QUARTERLY:
+                    case YEAR_HALF:
+                        cloudTeacherOrder.setType(2);
+                        break;
+                    case YEAR:
+                        cloudTeacherOrder.setType(3);
+                        break;
+                    default:
+                        throw new BizException("不支持的周期类型");
+                }
+                Student student = studentService.get(userId);
+                if (student.getMemberRankSettingId() == null || now.after(student.getMembershipEndTime())) {
+                    cloudTeacherOrder.setStartTime(now);
+                    switch (periodEnum){
+                        case DAY:
+                            cloudTeacherOrder.setEndTime(DateUtil.addDays(now, activity.getGiveMemberTime()));
+                            break;
+                        case MONTH:
+                            cloudTeacherOrder.setEndTime(DateUtil.addMonths(now, activity.getGiveMemberTime()));
+                            break;
+                        case QUARTERLY:
+                            cloudTeacherOrder.setEndTime(DateUtil.addMonths(now, activity.getGiveMemberTime() * 3));
+                            break;
+                        case YEAR_HALF:
+                            cloudTeacherOrder.setEndTime(DateUtil.addMonths(now, activity.getGiveMemberTime() * 6));
+                            break;
+                        case YEAR:
+                            cloudTeacherOrder.setEndTime(DateUtil.addYears(now, activity.getGiveMemberTime()));
+                            break;
+                        default:
+                            throw new BizException("不支持的周期类型");
+                    }
+                } else {
+                    cloudTeacherOrder.setStartTime(DateUtil.addDays(student.getMembershipEndTime(), 1));
+                    switch (periodEnum){
+                        case DAY:
+                            cloudTeacherOrder.setEndTime(DateUtil.addDays(student.getMembershipEndTime(), activity.getGiveMemberTime()));
+                            break;
+                        case MONTH:
+                            cloudTeacherOrder.setEndTime(DateUtil.addMonths(student.getMembershipEndTime(), activity.getGiveMemberTime()));
+                            break;
+                        case QUARTERLY:
+                            cloudTeacherOrder.setEndTime(DateUtil.addMonths(student.getMembershipEndTime(), activity.getGiveMemberTime() * 3));
+                            break;
+                        case YEAR_HALF:
+                            cloudTeacherOrder.setEndTime(DateUtil.addMonths(student.getMembershipEndTime(), activity.getGiveMemberTime() * 6));
+                            break;
+                        case YEAR:
+                            cloudTeacherOrder.setEndTime(DateUtil.addYears(student.getMembershipEndTime(), activity.getGiveMemberTime()));
+                            break;
+                        default:
+                            throw new BizException("不支持的周期类型");
+                    }
+                }
+                cloudTeacherOrderService.update(cloudTeacherOrder);
+                // 添加会员有效时长
+                studentService.updateMemberRank(cloudTeacherOrder, periodEnum);
+            }
+        }
+    }
 }

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

@@ -2485,96 +2485,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		}
 		VipGroup vipGroup = vipGroupDao.get(vipGroupId);
 		try {
-			Integer vipGroupActivityId = vipGroup.getVipGroupActivityId();
-			if(vipGroupActivityId != null){
-				ActivityUserMapper activityUserMapper = new ActivityUserMapper();
-				VipGroupActivity activity = vipGroupActivityDao.get(vipGroupActivityId);
-				//是否赠送课程
-				if(activity.getGiveCourseNum() > 0){
-					if(activity.getGiveCourseType().equals("VIP")){
-						activityUserMapper.setGiveVipFlag(1);
-					}else {
-						activityUserMapper.setGivePracticeFlag(1);
-					}
-				}
-				//是否赠送会员(会员立即生效)
-				if(activity.getMemberTime() > 0){
-					Date now = new Date();
-					// 查询会员订单信息
-					CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
-					cloudTeacherOrder.setStatus(2);
-					cloudTeacherOrder.setUpdateTime(now);
-					cloudTeacherOrder.setAmount(BigDecimal.ZERO);
-					cloudTeacherOrder.setOrderId(studentPaymentOrder.getId());
-					cloudTeacherOrder.setRemark("购买vip活动赠送会员");
-					cloudTeacherOrder.setLevel(activity.getGiveMemberRankId());
-					cloudTeacherOrder.setStudentId(studentPaymentOrder.getUserId());
-					cloudTeacherOrder.setType(2);
-					PeriodEnum periodEnum = activity.getGivePeriodEnum();
-					switch (periodEnum){
-						case DAY:
-							cloudTeacherOrder.setType(1);
-							break;
-						case MONTH:
-						case QUARTERLY:
-						case YEAR_HALF:
-							cloudTeacherOrder.setType(2);
-							break;
-						case YEAR:
-							cloudTeacherOrder.setType(3);
-							break;
-						default:
-							throw new BizException("不支持的周期类型");
-					}
-					Student student = studentDao.get(userId);
-					if (student.getMemberRankSettingId() == null || now.after(student.getMembershipEndTime())) {
-						cloudTeacherOrder.setStartTime(now);
-						switch (periodEnum){
-							case DAY:
-								cloudTeacherOrder.setEndTime(DateUtil.addDays(now, activity.getGiveMemberTime()));
-								break;
-							case MONTH:
-								cloudTeacherOrder.setEndTime(DateUtil.addMonths(now, activity.getGiveMemberTime()));
-								break;
-							case QUARTERLY:
-								cloudTeacherOrder.setEndTime(DateUtil.addMonths(now, activity.getGiveMemberTime() * 3));
-								break;
-							case YEAR_HALF:
-								cloudTeacherOrder.setEndTime(DateUtil.addMonths(now, activity.getGiveMemberTime() * 6));
-								break;
-							case YEAR:
-								cloudTeacherOrder.setEndTime(DateUtil.addYears(now, activity.getGiveMemberTime()));
-								break;
-							default:
-								throw new BizException("不支持的周期类型");
-						}
-					} else {
-						cloudTeacherOrder.setStartTime(DateUtil.addDays(student.getMembershipEndTime(), 1));
-						switch (periodEnum){
-							case DAY:
-								cloudTeacherOrder.setEndTime(DateUtil.addDays(student.getMembershipEndTime(), activity.getGiveMemberTime()));
-								break;
-							case MONTH:
-								cloudTeacherOrder.setEndTime(DateUtil.addMonths(student.getMembershipEndTime(), activity.getGiveMemberTime()));
-								break;
-							case QUARTERLY:
-								cloudTeacherOrder.setEndTime(DateUtil.addMonths(student.getMembershipEndTime(), activity.getGiveMemberTime() * 3));
-								break;
-							case YEAR_HALF:
-								cloudTeacherOrder.setEndTime(DateUtil.addMonths(student.getMembershipEndTime(), activity.getGiveMemberTime() * 6));
-								break;
-							case YEAR:
-								cloudTeacherOrder.setEndTime(DateUtil.addYears(student.getMembershipEndTime(), activity.getGiveMemberTime()));
-								break;
-							default:
-								throw new BizException("不支持的周期类型");
-						}
-					}
-					cloudTeacherOrderService.update(cloudTeacherOrder);
-					// 添加会员有效时长
-					studentService.updateMemberRank(cloudTeacherOrder, periodEnum);
-				}
-			}
+			studentPaymentOrderService.activityGive(vipGroup.getVipGroupActivityId(),userId,studentPaymentOrder.getId());
 			if(classGroup.getDelFlag()==1){
 				updateVipGroupStudentNumAndStatus(vipGroupId, classGroup,0,true);
 			}