Browse Source

活动排课

zouxuan 4 years ago
parent
commit
fa28213c66

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentOrder.java

@@ -130,6 +130,16 @@ public class StudentPaymentOrder {
 
 	private Integer activityId;
 
+	private Integer activityBuyNum = 0;
+
+	public Integer getActivityBuyNum() {
+		return activityBuyNum;
+	}
+
+	public void setActivityBuyNum(Integer activityBuyNum) {
+		this.activityBuyNum = activityBuyNum;
+	}
+
 	public Integer getActivityId() {
 		return activityId;
 	}

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java

@@ -29,7 +29,7 @@ public class VipGroupActivity {
 	@ApiModelProperty(value = "单节课时长")
 	private Integer giveSingleCourseTime = 45;
 
-	@ApiModelProperty(value = "活动描述\n")
+	@ApiModelProperty(value = "活动描述")
 	private String description;
 
 	@ApiModelProperty(value = "课程形式")
@@ -60,10 +60,10 @@ public class VipGroupActivity {
 	private Integer fullMinusCourseTimes = -1;
 
 	@ApiModelProperty(value = "赠课类型")
-	private String giveCourseType = "VIP";
+	private String giveCourseType;
 
 	@ApiModelProperty(value = "课类型")
-	private String courseType = "VIP";
+	private String courseType;
 
 	@ApiModelProperty(value = "赠课形式")
 	private String giveCategoryId;

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

@@ -209,5 +209,5 @@ public interface StudentPaymentOrderService extends BaseService<Long, StudentPay
     * @author zx
     * @date 2021/10/11 10:36
     */
-    Integer activityGive(Integer vipGroupActivityId,Integer userId,Long paymentOrderId,Long vipGroupId,Long practiceGroupId);
+    Integer activityGive(Integer vipGroupActivityId,Integer userId,Long paymentOrderId,Long vipGroupId,Long practiceGroupId,Integer buyNum);
 }

+ 66 - 58
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -137,6 +137,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     @Autowired
     private ActivityUserMapperDao activityUserMapperDao;
     @Autowired
+    private VipGroupDao vipGroupDao;
+    @Autowired
     private CloudTeacherOrderDao cloudTeacherOrderDao;
     @Autowired
     private StudentService studentService;
@@ -3696,7 +3698,11 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         }
         PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(order.getMusicGroupId()));
         if (order.getStatus().equals(DealStatusEnum.SUCCESS)) {
-            Integer activityUserMapperId = studentPaymentOrderService.activityGive(practiceGroup.getVipGroupActivityId(), order.getUserId(), order.getId(), null, practiceGroup.getId());
+            Integer activityUserMapperId = studentPaymentOrderService.activityGive(practiceGroup.getVipGroupActivityId(),
+                    order.getUserId(),
+                    order.getId(),
+                    null,
+                    practiceGroup.getId(),order.getActivityBuyNum());
             practiceGroup.setActivityUserMapperId(activityUserMapperId);
             courseScheduleDao.updateGroupCourseLock(order.getMusicGroupId(), GroupType.PRACTICE, 0);
         } else {
@@ -3920,63 +3926,65 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                     }
                 }
             }
-            if(activity.getGiveMemberTime() > 0){
-                //会员立即生效
-                Integer cloudTeacherType;
-                PeriodEnum periodEnum = activity.getGivePeriodEnum();
-                Integer cloudTime = activity.getGiveMemberTime();
-                CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
-                Date addDate = now;
-                if (student.getMemberRankSettingId() == null || now.after(student.getMembershipEndTime())) {
-                    cloudTeacherOrder.setStartTime(now);
-                } else {
-                    addDate = student.getMembershipEndTime();
-                    cloudTeacherOrder.setStartTime(DateUtil.addDays(addDate, 1));
-                }
-                switch (periodEnum){
-                    case DAY:
-                        cloudTeacherOrder.setEndTime(DateUtil.addDays(addDate, cloudTime));
-                        cloudTeacherType = 1;
-                        break;
-                    case MONTH:
-                        cloudTeacherType = 2;
-                        cloudTeacherOrder.setEndTime(DateUtil.addMonths(addDate, cloudTime));
-                        break;
-                    case QUARTERLY:
-                        cloudTeacherType = 2;
-                        cloudTime = cloudTime * 3;
-                        cloudTeacherOrder.setEndTime(DateUtil.addMonths(addDate, cloudTime * 3));
-                        break;
-                    case YEAR_HALF:
-                        cloudTime = cloudTime * 6;
-                        cloudTeacherOrder.setEndTime(DateUtil.addMonths(addDate, cloudTime * 6));
-                        cloudTeacherType = 2;
-                        break;
-                    case YEAR:
-                        cloudTeacherOrder.setEndTime(DateUtil.addYears(addDate, cloudTime));
-                        cloudTeacherType = 3;
-                        break;
-                    default:
-                        throw new BizException("不支持的周期类型");
-                }
-                cloudTeacherOrder.setRemark("营销活动赠送会员");
-                cloudTeacherOrder.setStatus(2);
-                cloudTeacherOrder.setOrderId(order.getId());
-                cloudTeacherOrder.setType(cloudTeacherType);
-                cloudTeacherOrder.setAmount(BigDecimal.ZERO);
-                cloudTeacherOrder.setLevel(activity.getGiveMemberRankId());
-                cloudTeacherOrder.setStudentId(userId);
-                cloudTeacherOrder.setOrganId(order.getOrganId());
-                cloudTeacherOrder.setTime(cloudTime);
-                cloudTeacherOrderDao.insert(cloudTeacherOrder);
-                studentService.updateMemberRank(cloudTeacherOrder,periodEnum);
-                activityUserMapper.setGiveMemberFlag(2);
-                activityUserMapper.setGiveMemberOrderId(cloudTeacherOrder.getId());
-            }else if(activity.getGiveCourseNum() > 0){
-                if(activity.getGiveCourseType().equals("VIP")){
-                    activityUserMapper.setGiveVipFlag(1);
-                }else {
-                    activityUserMapper.setGivePracticeFlag(1);
+            if(activity.getFullMinusCourseTimes() != -1 && order.getActivityBuyNum() >= activity.getFullMinusCourseTimes()){
+                if(activity.getGiveMemberTime() > 0){
+                    //会员立即生效
+                    Integer cloudTeacherType;
+                    PeriodEnum periodEnum = activity.getGivePeriodEnum();
+                    Integer cloudTime = activity.getGiveMemberTime();
+                    CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
+                    Date addDate = now;
+                    if (student.getMemberRankSettingId() == null || now.after(student.getMembershipEndTime())) {
+                        cloudTeacherOrder.setStartTime(now);
+                    } else {
+                        addDate = student.getMembershipEndTime();
+                        cloudTeacherOrder.setStartTime(DateUtil.addDays(addDate, 1));
+                    }
+                    switch (periodEnum){
+                        case DAY:
+                            cloudTeacherOrder.setEndTime(DateUtil.addDays(addDate, cloudTime));
+                            cloudTeacherType = 1;
+                            break;
+                        case MONTH:
+                            cloudTeacherType = 2;
+                            cloudTeacherOrder.setEndTime(DateUtil.addMonths(addDate, cloudTime));
+                            break;
+                        case QUARTERLY:
+                            cloudTeacherType = 2;
+                            cloudTime = cloudTime * 3;
+                            cloudTeacherOrder.setEndTime(DateUtil.addMonths(addDate, cloudTime * 3));
+                            break;
+                        case YEAR_HALF:
+                            cloudTime = cloudTime * 6;
+                            cloudTeacherOrder.setEndTime(DateUtil.addMonths(addDate, cloudTime * 6));
+                            cloudTeacherType = 2;
+                            break;
+                        case YEAR:
+                            cloudTeacherOrder.setEndTime(DateUtil.addYears(addDate, cloudTime));
+                            cloudTeacherType = 3;
+                            break;
+                        default:
+                            throw new BizException("不支持的周期类型");
+                    }
+                    cloudTeacherOrder.setRemark("营销活动赠送会员");
+                    cloudTeacherOrder.setStatus(2);
+                    cloudTeacherOrder.setOrderId(order.getId());
+                    cloudTeacherOrder.setType(cloudTeacherType);
+                    cloudTeacherOrder.setAmount(BigDecimal.ZERO);
+                    cloudTeacherOrder.setLevel(activity.getGiveMemberRankId());
+                    cloudTeacherOrder.setStudentId(userId);
+                    cloudTeacherOrder.setOrganId(order.getOrganId());
+                    cloudTeacherOrder.setTime(cloudTime);
+                    cloudTeacherOrderDao.insert(cloudTeacherOrder);
+                    studentService.updateMemberRank(cloudTeacherOrder,periodEnum);
+                    activityUserMapper.setGiveMemberFlag(2);
+                    activityUserMapper.setGiveMemberOrderId(cloudTeacherOrder.getId());
+                }else if(activity.getGiveCourseNum() > 0){
+                    if(activity.getGiveCourseType().equals("VIP")){
+                        activityUserMapper.setGiveVipFlag(1);
+                    }else {
+                        activityUserMapper.setGivePracticeFlag(1);
+                    }
                 }
             }
             activityUserMapperDao.insert(activityUserMapper);

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

@@ -716,7 +716,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Integer activityGive(Integer vipGroupActivityId, Integer userId, Long paymentOrderId,Long vipGroupId,Long practiceGroupId) {
+    public Integer activityGive(Integer vipGroupActivityId, Integer userId, Long paymentOrderId,Long vipGroupId,Long practiceGroupId,Integer buyNum) {
         Integer activityUserMapperId = null;
         if(vipGroupActivityId != null){
             ActivityUserMapper activityUserMapper = new ActivityUserMapper();
@@ -730,7 +730,12 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             }else {
                 activityUserMapper.setPracticeFlag(2);
             }
+            //是否达到满赠标准
             VipGroupActivity activity = vipGroupActivityDao.get(vipGroupActivityId);
+            if(activity.getFullMinusCourseTimes() == -1 || buyNum < activity.getFullMinusCourseTimes()){
+                activityUserMapperDao.insert(activityUserMapper);
+                return activityUserMapper.getId();
+            }
             //是否赠送课程
             if(activity.getGiveCourseNum() > 0){
                 if(activity.getGiveCourseType().equals("VIP")){

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

@@ -2860,7 +2860,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		}
 		VipGroup vipGroup = vipGroupDao.get(vipGroupId);
 		try {
-			Integer activityUserMapperId = studentPaymentOrderService.activityGive(vipGroup.getVipGroupActivityId(), userId, studentPaymentOrder.getId(), vipGroupId, null);
+			Integer activityUserMapperId = studentPaymentOrderService.activityGive(vipGroup.getVipGroupActivityId(),
+					userId,
+					studentPaymentOrder.getId(),
+					vipGroupId,
+					null,studentPaymentOrder.getActivityBuyNum());
 			if(classGroup.getDelFlag() == 1){
 				updateVipGroupStudentNumAndStatus(vipGroupId, classGroup,0,true);
 			}

+ 10 - 2
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -38,6 +38,7 @@
         <result column="coupon_code_id_" property="couponCodeId"/>
         <result column="coupon_remit_fee_" property="couponRemitFee"/>
         <result column="activity_id_" property="activityId"/>
+        <result column="activity_buy_num_" property="activityBuyNum"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.dto.StudentPaymentOrderDto" extends="StudentPaymentOrder"
@@ -106,7 +107,8 @@
          per_amount_,
          balance_payment_amount_, remit_fee_, course_remit_fee_, trans_no_,
          status_, memo_, create_time_, update_time_, payment_channel_, payment_business_channel_,
-         payment_account_no_, mer_nos_, order_no_, music_group_id_, class_group_id_, pay_time_,batch_no_,coupon_code_id_,coupon_remit_fee_,activity_id_)
+         payment_account_no_, mer_nos_, order_no_, music_group_id_, class_group_id_, pay_time_,batch_no_,coupon_code_id_,
+         coupon_remit_fee_,activity_id_,activity_buy_num_)
         VALUES (#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
                 #{userId}, #{organId}, #{routingOrganId},
                 #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
@@ -115,7 +117,7 @@
                 #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{memo}, now(), now(),
                 #{paymentChannel}, #{paymentBusinessChannel}, #{paymentAccountNo}, #{merNos}, #{orderNo},
                 #{musicGroupId},
-                #{classGroupId}, #{payTime},#{batchNo},#{couponCodeId},#{couponRemitFee},#{activityId})
+                #{classGroupId}, #{payTime},#{batchNo},#{couponCodeId},#{couponRemitFee},#{activityId},#{activityBuyNum})
     </insert>
 
 
@@ -123,6 +125,9 @@
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentPaymentOrder">
         UPDATE student_payment_order
         <set>
+            <if test="activityBuyNum != null">
+                activity_buy_num_ = #{activityBuyNum},
+            </if>
             <if test="activityId != null">
                 activity_id_ = #{activityId},
             </if>
@@ -213,6 +218,9 @@
 		<foreach collection="studentPaymentOrderList" item="studentPaymentOrder" separator=";">
 	        UPDATE student_payment_order
 	        <set>
+                <if test="studentPaymentOrder.activityBuyNum != null">
+                    activity_buy_num_ = #{studentPaymentOrder.activityBuyNum},
+                </if>
                 <if test="studentPaymentOrder.activityId != null">
                     activity_id_ = #{studentPaymentOrder.activityId},
                 </if>