Browse Source

活动排课

zouxuan 4 years ago
parent
commit
c52b367ef1

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ActivityUserMapperDao.java

@@ -31,4 +31,14 @@ public interface ActivityUserMapperDao extends BaseDAO<Integer, ActivityUserMapp
     * @date 2021/10/12 18:22
     */
     int countActivityBuyNum(@Param("activityId") Integer activityId, @Param("userId") Integer userId);
+
+    /**
+    * @description:
+     * @param groupId
+     * @param studentId
+    * @return com.ym.mec.biz.dal.entity.ActivityUserMapper
+    * @author zx
+    * @date 2021/10/14 15:40
+    */
+    ActivityUserMapper findByStudentId(@Param("groupId") Long groupId, @Param("studentId") Integer studentId);
 }

+ 0 - 11
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroup.java

@@ -141,17 +141,6 @@ public class VipGroup {
 
 	private int enableDelete;
 
-	@ApiModelProperty(value = "学员购买的活动明细id")
-	private Integer activityUserMapperId;
-
-	public Integer getActivityUserMapperId() {
-		return activityUserMapperId;
-	}
-
-	public void setActivityUserMapperId(Integer activityUserMapperId) {
-		this.activityUserMapperId = activityUserMapperId;
-	}
-
 	public Integer getEnableDelete() {
 		return enableDelete;
 	}

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

@@ -5003,6 +5003,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         studentPaymentOrder.setClassGroupId(classGroup.getId());
         studentPaymentOrder.setOrganId(practiceGroup.getOrganId());
         studentPaymentOrder.setVersion(0);
+        studentPaymentOrder.setActivityId(practiceGroup.getVipGroupActivityId());
         studentPaymentOrderDao.insert(studentPaymentOrder);
 
         BigDecimal amount=studentPaymentOrder.getActualAmount();
@@ -5182,6 +5183,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         studentPaymentOrder.setRoutingOrganId(practiceGroupBuyParams.getOrganId());
         studentPaymentOrder.setCreateTime(nowDate);
         studentPaymentOrder.setUpdateTime(nowDate);
+        studentPaymentOrder.setActivityId(activityId);
         studentPaymentOrderService.update(studentPaymentOrder);
 
         studentPaymentOrder.setVersion(0);

+ 22 - 39
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -742,7 +742,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             activityUserMapperDao.insert(activityUserMapper);
             activityUserMapperId = activityUserMapper.getId();
             //是否赠送会员(会员立即生效)
-            if(activity.getMemberTime() > 0){
+            if(activity.getGiveMemberTime() > 0){
                 Date now = new Date();
                 // 查询会员订单信息
                 CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
@@ -771,48 +771,31 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                         throw new BizException("不支持的周期类型");
                 }
                 Student student = studentService.get(userId);
+                Date startDate = now;
                 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("不支持的周期类型");
-                    }
+                    startDate = student.getMembershipEndTime();
+                }
+                switch (periodEnum){
+                    case DAY:
+                        cloudTeacherOrder.setEndTime(DateUtil.addDays(startDate, activity.getGiveMemberTime()));
+                        break;
+                    case MONTH:
+                        cloudTeacherOrder.setEndTime(DateUtil.addMonths(startDate, activity.getGiveMemberTime()));
+                        break;
+                    case QUARTERLY:
+                        cloudTeacherOrder.setEndTime(DateUtil.addMonths(startDate, activity.getGiveMemberTime() * 3));
+                        break;
+                    case YEAR_HALF:
+                        cloudTeacherOrder.setEndTime(DateUtil.addMonths(startDate, activity.getGiveMemberTime() * 6));
+                        break;
+                    case YEAR:
+                        cloudTeacherOrder.setEndTime(DateUtil.addYears(startDate, activity.getGiveMemberTime()));
+                        break;
+                    default:
+                        throw new BizException("不支持的周期类型");
                 }
                 cloudTeacherOrderService.update(cloudTeacherOrder);
                 // 添加会员有效时长

+ 15 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -47,9 +47,6 @@ import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import static com.ym.mec.biz.dal.enums.GroupType.VIP;
-import static com.ym.mec.biz.dal.enums.PeriodEnum.QUARTERLY;
-import static jdk.nashorn.internal.parser.DateParser.DAY;
-import static jdk.nashorn.internal.parser.DateParser.MONTH;
 
 @Service
 public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> implements VipGroupService {
@@ -2720,10 +2717,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class);
 		courseScheduleService.checkNewCourseSchedules(courseSchedules,false,false);
 
-		StudentPaymentOrder studentPaymentOrder=sysCouponCodeService.use(vipGroupBuyParams.getCouponIdList(),vipGroup.getTotalPrice(),true);
+		StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(vipGroupBuyParams.getCouponIdList(),vipGroup.getTotalPrice(),true);
 		studentPaymentOrder.setUserId(user.getId());
         studentPaymentOrder.setGroupType(GroupType.VIP);
-		String orderNo=idGeneratorService.generatorId("payment") + "";
+		String orderNo = idGeneratorService.generatorId("payment") + "";
 		studentPaymentOrder.setOrderNo(orderNo);
 		studentPaymentOrder.setStatus(DealStatusEnum.ING);
 		studentPaymentOrder.setType(OrderTypeEnum.SMALL_CLASS_TO_BUY);
@@ -2732,6 +2729,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		studentPaymentOrder.setClassGroupId(classGroup.getId());
 		studentPaymentOrder.setOrganId(vipGroup.getOrganId());
 		studentPaymentOrder.setVersion(0);
+		studentPaymentOrder.setActivityId(vipGroup.getVipGroupActivityId());
 		studentPaymentOrderDao.insert(studentPaymentOrder);
 
 		BigDecimal amount=studentPaymentOrder.getActualAmount();
@@ -2863,7 +2861,6 @@ 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);
-			vipGroup.setActivityUserMapperId(activityUserMapperId);
 			if(classGroup.getDelFlag() == 1){
 				updateVipGroupStudentNumAndStatus(vipGroupId, classGroup,0,true);
 			}
@@ -3064,9 +3061,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			throw new BizException("学员最大可退费金额为{}元", suplusCourseFee.toString());
 		}
 		//退还活动购买
-		HttpResponseResult result = groupClassService.quitActivityGive(vipGroup.getActivityUserMapperId(), returnFeeDto.getConfirmReturnActivityGive(), studentId);
-		if(result.getCode() != 200){
-			return result;
+		ActivityUserMapper activityUserMapper = activityUserMapperDao.findByStudentId(vipGroup.getId(),studentId);
+		if(activityUserMapper != null){
+			HttpResponseResult result = groupClassService.quitActivityGive(activityUserMapper.getId(), returnFeeDto.getConfirmReturnActivityGive(), studentId);
+			if(result.getCode() != 200){
+				return result;
+			}
 		}
 
 		sysUserCashAccountService.updateBalance(studentId, amount);
@@ -3509,9 +3509,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if (studentApplyRefunds.getStatus() == StudentApplyRefundsStatus.DONE) {
 			//退还活动购买
 			VipGroup vipGroup = vipGroupDao.get(id);
-			HttpResponseResult result = groupClassService.quitActivityGive(vipGroup.getActivityUserMapperId(),confirmReturnActivityGive, studentApplyRefunds.getUserId());
-			if(result.getCode() != 200){
-				return result;
+			ActivityUserMapper activityUserMapper = activityUserMapperDao.findByStudentId(vipGroup.getId(), studentPaymentOrder.getUserId());
+			if(activityUserMapper != null){
+				HttpResponseResult result = groupClassService.quitActivityGive(activityUserMapper.getId(),confirmReturnActivityGive, studentApplyRefunds.getUserId());
+				if(result.getCode() != 200){
+					return result;
+				}
 			}
 			studentApplyRefunds.setActualAmount(amount);
 		}else{

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/ActivityUserMapperMapper.xml

@@ -140,4 +140,7 @@
 		SELECT count(id_) FROM activity_user_mapper
 		WHERE activity_id_ = #{activityId} AND user_id_ = #{userId}
 	</select>
+    <select id="findByStudentId" resultMap="ActivityUserMapper">
+		SELECT * FROM activity_user_mapper WHERE vip_group_id_ = #{groupId} AND user_id_ = #{studentId}
+	</select>
 </mapper>

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

@@ -37,6 +37,7 @@
         <result column="batch_no_" property="batchNo"/>
         <result column="coupon_code_id_" property="couponCodeId"/>
         <result column="coupon_remit_fee_" property="couponRemitFee"/>
+        <result column="activity_id_" property="activityId"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.dto.StudentPaymentOrderDto" extends="StudentPaymentOrder"
@@ -105,7 +106,7 @@
          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_)
+         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_)
         VALUES (#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
                 #{userId}, #{organId}, #{routingOrganId},
                 #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
@@ -114,7 +115,7 @@
                 #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{memo}, now(), now(),
                 #{paymentChannel}, #{paymentBusinessChannel}, #{paymentAccountNo}, #{merNos}, #{orderNo},
                 #{musicGroupId},
-                #{classGroupId}, #{payTime},#{batchNo},#{couponCodeId},#{couponRemitFee})
+                #{classGroupId}, #{payTime},#{batchNo},#{couponCodeId},#{couponRemitFee},#{activityId})
     </insert>
 
 
@@ -122,6 +123,9 @@
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentPaymentOrder">
         UPDATE student_payment_order
         <set>
+            <if test="activityId != null">
+                activity_id_ = #{activityId},
+            </if>
             <if test="receiveStatus != null and receiveStatus != ''">
                 receive_status_ = #{receiveStatus},
             </if>
@@ -209,6 +213,9 @@
 		<foreach collection="studentPaymentOrderList" item="studentPaymentOrder" separator=";">
 	        UPDATE student_payment_order
 	        <set>
+                <if test="studentPaymentOrder.activityId != null">
+                    activity_id_ = #{studentPaymentOrder.activityId},
+                </if>
 	            <if test="studentPaymentOrder.receiveStatus != null and studentPaymentOrder.receiveStatus != ''">
 	                receive_status_ = #{studentPaymentOrder.receiveStatus},
 	            </if>

+ 2 - 6
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -47,7 +47,6 @@
         <result column="educational_teacher_id_" property="educationalTeacherId"/>
         <result column="vip_group_category_name_" property="vipGroupCategoryName"/>
         <result column="educational_teacher_name_" property="educationalTeacherName" />
-        <result column="activity_user_mapper_id_" property="activityUserMapperId" />
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.entity.School" id="School">
@@ -238,21 +237,18 @@
          update_time_,teacher_school_id_,online_classes_num_,offline_classes_num_,registration_start_time_,
          name_,organ_id_list_,vip_group_activity_id_,group_status_,online_classes_unit_price_,offline_classes_unit_price_,
          total_price_,give_teach_mode_,vip_group_category_id_,organ_id_,stop_reason_,memo_,audit_status_,courses_start_date,
-         course_schedules_json_,student_id_list_,activity_user_mapper_id_)
+         course_schedules_json_,student_id_list_)
         VALUES(#{id},#{userId},#{singleClassMinutes},#{paymentExpireDate},#{coursesExpireDate},now(),now(),#{teacherSchoolId},
                #{onlineClassesNum},#{offlineClassesNum},#{registrationStartTime},#{name},#{organIdList},#{vipGroupActivityId},
                #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{onlineClassesUnitPrice},#{offlineClassesUnitPrice},
                #{totalPrice},#{giveTeachMode},#{vipGroupCategoryId},#{organId},#{stopReason},#{memo},
-               #{auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{courseStartDate},#{courseSchedulesJson},#{studentIdList},#{activityUserMapperId})
+               #{auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{courseStartDate},#{courseSchedulesJson},#{studentIdList})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.VipGroup">
         UPDATE vip_group
         <set>
-            <if test="activityUserMapperId != null">
-                activity_user_mapper_id_ = #{activityUserMapperId},
-            </if>
             <if test="paymentExpireDate != null">
                 payment_expire_date_ = #{paymentExpireDate},
             </if>