Ver Fonte

Merge branch 'active_course_2021-09-26~29' of http://git.dayaedu.com/yonge/mec into 2021-double-eleven

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ActivityUserMapperDao.java
	mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java
	mec-biz/src/main/java/com/ym/mec/biz/service/ActivityUserMapperService.java
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java
	mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml
zouxuan há 3 anos atrás
pai
commit
d56d4cce9a

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

@@ -65,4 +65,14 @@ public interface ActivityUserMapperDao extends BaseDAO<Integer, ActivityUserMapp
     * @date 2021/10/20 13:38
     */
     void batchInsert(@Param("activityUserMappers") List<ActivityUserMapper> activityUserMappers);
+
+    /**
+    * @description:
+     * @param groupId
+ * @param groupType
+    * @return com.ym.mec.biz.dal.entity.ActivityUserMapper
+    * @author zx
+    * @date 2021/10/22 17:36
+    */
+    ActivityUserMapper findVipUserMapper(@Param("groupId") Long groupId, @Param("groupType") String groupType);
 }

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

@@ -151,8 +151,11 @@ public class VipGroupActivity {
 	@ApiModelProperty(value = "适用学生类型:-1:所有;0:老用户;1:新用户,2会员,3非会员")
 	private String applyToStudentType;
 
-	@ApiModelProperty(value = "课程可调整方向:0双向可调,1禁止线上到线下,2禁止线下到线上,3双向不可调")
-	private Integer allowOnlineToOffline = 0;
+	@ApiModelProperty(value = "课程可调整方向:1不限制,0线上不可到线下,2禁止线下到线上,3双向不可调")
+	private Integer allowOnlineToOffline = 1;
+
+	@ApiModelProperty(value = "赠送课程可调整方向:1不限制,0线上不可到线下,2禁止线下到线上,3双向不可调")
+	private Integer giveAllowOnlineToOffline = 1;
 
 	@ApiModelProperty(value = "-1:所有;0:线上;1:线下")
 	private Integer teachMode = -1;
@@ -177,6 +180,14 @@ public class VipGroupActivity {
 		this.givePrizeNum = givePrizeNum;
 	}
 
+	public Integer getGiveAllowOnlineToOffline() {
+		return giveAllowOnlineToOffline;
+	}
+
+	public void setGiveAllowOnlineToOffline(Integer giveAllowOnlineToOffline) {
+		this.giveAllowOnlineToOffline = giveAllowOnlineToOffline;
+	}
+
 	public BigDecimal getMarketPrice() {
 		return marketPrice;
 	}

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

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.ActivityUserMapper;
 import com.ym.mec.common.service.BaseService;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -57,4 +58,14 @@ public interface ActivityUserMapperService extends BaseService<Integer, Activity
     * @date 2021/10/20 13:37
     */
     void batchInsert(List<ActivityUserMapper> activityUserMappers);
+
+    /**
+    * @description:
+     * @param groupId
+     * @param groupType
+    * @return com.ym.mec.biz.dal.entity.ActivityUserMapper
+    * @author zx
+    * @date 2021/10/22 17:35
+    */
+    ActivityUserMapper findVipUserMapper(Long groupId,String groupType);
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java

@@ -45,4 +45,9 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
     public void batchInsert(List<ActivityUserMapper> activityUserMappers) {
 		activityUserMapperDao.batchInsert(activityUserMappers);
     }
+
+	@Override
+	public ActivityUserMapper findVipUserMapper(Long groupId, String groupType) {
+		return activityUserMapperDao.findVipUserMapper(groupId,groupType);
+	}
 }

+ 40 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -155,7 +155,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     @Autowired
 	private VipGroupActivityDao vipGroupActivityDao;
     @Autowired
-	private StudentDao studentDao;
+	private ActivityUserMapperDao activityUserMapperDao;
     @Autowired
 	private MusicGroupTrainPlanService musicGroupTrainPlanService;
 
@@ -2770,15 +2770,27 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                     courseSchedules.get(courseStartDates.size() - 1).setClassDate(courseStartTime);
                     courseSchedules.get(courseStartDates.size() - 1).setStartClassTime(courseStartTime);
                     courseSchedules.get(courseStartDates.size() - 1).setEndClassTime(courseEndTime);
-                    if (Objects.nonNull(vipGroupCourseAdjustInfo.getTeachMode())) {
+
+					Integer allowOnlineToOffline = 0;
+					if(Objects.nonNull(vipGroupActivity)){
+						allowOnlineToOffline = vipGroupActivity.getAllowOnlineToOffline();
+						ActivityUserMapper activityUserMapper = activityUserMapperDao.findVipUserMapper(vipGroup.getId(), "VIP");
+						if(activityUserMapper != null){
+							if(vipGroup.getId().equals(activityUserMapper.getGiveVipGroupId())){
+								allowOnlineToOffline = vipGroupActivity.getGiveAllowOnlineToOffline();
+							}
+						}
+					}
+
+					if (Objects.nonNull(vipGroupCourseAdjustInfo.getTeachMode())) {
                     	boolean onlineToOffline = courseSchedules.get(courseStartDates.size() - 1).getTeachMode().equals(TeachModeEnum.ONLINE)
 								&&vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE);
 						boolean offlineToOnline = courseSchedules.get(courseStartDates.size() - 1).getTeachMode().equals(TeachModeEnum.OFFLINE)
 								&&vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.ONLINE);
-                        if(onlineToOffline&&Objects.nonNull(vipGroupActivity)&&(vipGroupActivity.getAllowOnlineToOffline()==0||vipGroupActivity.getAllowOnlineToOffline()==3)){
+                        if(onlineToOffline && Objects.nonNull(vipGroupActivity) && (allowOnlineToOffline == 0 || allowOnlineToOffline == 3)){
                             throw new BizException("此VIP课活动不支持线上课调整为线下课");
                         }
-						if(offlineToOnline&&Objects.nonNull(vipGroupActivity)&&(vipGroupActivity.getAllowOnlineToOffline()==2||vipGroupActivity.getAllowOnlineToOffline()==3)){
+						if(offlineToOnline&&Objects.nonNull(vipGroupActivity) && (allowOnlineToOffline == 2 || allowOnlineToOffline == 3)){
 							throw new BizException("此VIP课活动不支持线下课调整为线上课");
 						}
 						if(onlineToOffline&&Objects.isNull(vipGroupCourseAdjustInfo.getSchoolId())){
@@ -2974,12 +2986,22 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					throw new BizException("课程组信息不存在");
 				}
 				VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
+				Integer allowOnlineToOffline = 0;
+				if(Objects.nonNull(vipGroupActivity)){
+					allowOnlineToOffline = vipGroupActivity.getAllowOnlineToOffline();
+					ActivityUserMapper activityUserMapper = activityUserMapperDao.findVipUserMapper(vipGroup.getId(), "VIP");
+					if(activityUserMapper != null){
+						if(vipGroup.getId().equals(activityUserMapper.getGiveVipGroupId())){
+							allowOnlineToOffline = vipGroupActivity.getGiveAllowOnlineToOffline();
+						}
+					}
+				}
 				boolean onlineToOffline = TeachModeEnum.ONLINE.equals(oldCourses.get(i).getTeachMode())&&TeachModeEnum.OFFLINE.equals(courseAdjustInfo.getTeachMode());
 				boolean offlineToOnline = TeachModeEnum.OFFLINE.equals(oldCourses.get(i).getTeachMode())&&TeachModeEnum.ONLINE.equals(courseAdjustInfo.getTeachMode());
-				if(onlineToOffline&&Objects.nonNull(vipGroupActivity)&&(vipGroupActivity.getAllowOnlineToOffline()==0||vipGroupActivity.getAllowOnlineToOffline()==3)){
+				if(onlineToOffline&&Objects.nonNull(vipGroupActivity)&&(allowOnlineToOffline == 0 || allowOnlineToOffline == 3)){
 					throw new BizException("此VIP课活动不支持线上课调整为线下课");
 				}
-				if(offlineToOnline&&Objects.nonNull(vipGroupActivity)&&(vipGroupActivity.getAllowOnlineToOffline()==2||vipGroupActivity.getAllowOnlineToOffline()==3)){
+				if(offlineToOnline&&Objects.nonNull(vipGroupActivity)&&(allowOnlineToOffline == 2 || allowOnlineToOffline == 3)){
 					throw new BizException("此VIP课活动不支持线下课调整为线上课");
 				}
 			}
@@ -3418,12 +3440,22 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					throw new BizException("课程组信息不存在");
 				}
 				VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
+				Integer allowOnlineToOffline = 0;
+				if(Objects.nonNull(vipGroupActivity)){
+					allowOnlineToOffline = vipGroupActivity.getAllowOnlineToOffline();
+					ActivityUserMapper activityUserMapper = activityUserMapperDao.findVipUserMapper(vipGroup.getId(), "VIP");
+					if(activityUserMapper != null){
+						if(vipGroup.getId().equals(activityUserMapper.getGiveVipGroupId())){
+							allowOnlineToOffline = vipGroupActivity.getGiveAllowOnlineToOffline();
+						}
+					}
+				}
 				boolean onlineToOffline = TeachModeEnum.OFFLINE.equals(newCourseSchedule.getTeachMode())&&TeachModeEnum.ONLINE.equals(oldCourseSchedule.getTeachMode());
-				if(onlineToOffline&&Objects.nonNull(vipGroupActivity)&&(vipGroupActivity.getAllowOnlineToOffline()==0||vipGroupActivity.getAllowOnlineToOffline()==3)){
+				if(onlineToOffline&&Objects.nonNull(vipGroupActivity)&&(allowOnlineToOffline==0||allowOnlineToOffline==3)){
 					throw new BizException("此VIP课活动不支持线上课调整为线下课");
 				}
 				boolean offlineToOnline = TeachModeEnum.ONLINE.equals(newCourseSchedule.getTeachMode())&&TeachModeEnum.OFFLINE.equals(oldCourseSchedule.getTeachMode());
-				if(offlineToOnline&&Objects.nonNull(vipGroupActivity)&&(vipGroupActivity.getAllowOnlineToOffline()==2||vipGroupActivity.getAllowOnlineToOffline()==3)){
+				if(offlineToOnline&&Objects.nonNull(vipGroupActivity)&&(allowOnlineToOffline==2||allowOnlineToOffline==3)){
 					throw new BizException("此VIP课活动不支持线下课调整为线上课");
 				}
 			}

+ 19 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -308,7 +308,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		}
 		className.append(StringUtils.join(studentNames, ","));
 		vipGroupApplyBaseInfoDto.setName(className.toString());
-
+		vipGroupDao.insert(vipGroupApplyBaseInfoDto);
 		//计算课程相关费用信息
 		Map<String, BigDecimal> costInfo = countVipGroupPredictFee1(vipGroupApplyBaseInfoDto,
 				vipGroupApplyBaseInfoDto.getUserId(), null);
@@ -347,8 +347,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			vipGroupApplyBaseInfoDto.setAuditStatus(AuditStatusEnum.PASS);
 		}
 
-		vipGroupDao.insert(vipGroupApplyBaseInfoDto);
-
 		vscps.forEach(e->e.setVipGroupId(vipGroupApplyBaseInfoDto.getId()));
 		vipGroupStudentCoursePriceDao.batchInsert(vscps);
 
@@ -2233,7 +2231,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			throw new BizException("请设置教师VIP课课酬");
 		}
 
-		Map<String,BigDecimal> results=new HashMap<>(2);
+		Map<String,BigDecimal> results = new HashMap<>(2);
 
 		VipGroupSalarySettlementTypeDto vipOfflineSalarySettlement = null;
 		VipGroupSalarySettlementTypeDto giveVipOfflineSalarySettlement = null;
@@ -2247,11 +2245,20 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			}
 			vipOfflineSalarySettlement = vipGroupSalarySettlementDto.getVipOfflineSalarySettlement();
 			giveVipOfflineSalarySettlement = vipGroupSalarySettlementDto.getGiveVipOfflineSalarySettlement();
+
+			//是否是赠送课程
+			ActivityUserMapper activityUserMapper = activityUserMapperService.findVipUserMapper(vipGroup.getId(),"VIP");
+			if(activityUserMapper != null){
+				if(vipGroup.getId().equals(activityUserMapper.getGiveVipGroupId())){
+					vipOfflineSalarySettlement = vipGroupSalarySettlementDto.getGiveVipOfflineSalarySettlement();
+				}
+			}
+
 		}
 
-		BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
-		BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
-		BigDecimal onlineClassesUnitPrice=vipGroup.getOnlineClassesUnitPrice();
+		BigDecimal offlineClassNum = new BigDecimal(vipGroup.getOfflineClassesNum());
+		BigDecimal onlineClassNum = new BigDecimal(vipGroup.getOnlineClassesNum());
+		BigDecimal onlineClassesUnitPrice = vipGroup.getOnlineClassesUnitPrice();
 		if(Objects.isNull(onlineClassesUnitPrice)){
 			throw new BizException("课程单价异常");
 		}
@@ -2314,6 +2321,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(Objects.isNull(gofts)){
 			gofts = BigDecimal.ZERO;
 		}
+		if(!vipGroupCategory.getMusicTheory()){
+			int normalStudentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(VIP, vipGroup.getId().toString());
+			gofts = gofts.divide(new BigDecimal(vipGroupCategory.getStudentNum()),CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+			ofts = ofts.divide(new BigDecimal(vipGroupCategory.getStudentNum()),CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+		}
 		results.put("offlineTeacherSalary", ofts);
 		results.put("giveOfflineTeacherSalary", gofts);
         return results;

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

@@ -184,4 +184,15 @@
     <select id="findByStudentId" resultMap="ActivityUserMapper">
 		SELECT * FROM activity_user_mapper WHERE vip_group_id_ = #{groupId} AND user_id_ = #{studentId}
 	</select>
+	<select id="findVipUserMapper" resultMap="ActivityUserMapper">
+		SELECT * FROM activity_user_mapper
+		WHERE 1 = 1
+		<if test="groupType == 'VIP'">
+			AND (vip_group_id_ = #{groupId} OR give_vip_group_id_ = #{groupId})
+		</if>
+		<if test="groupType == 'PRACTICE'">
+			AND (practice_group_id_ = #{groupId} OR give_practice_group_id_ = #{groupId})
+		</if>
+		LIMIT 1
+	</select>
 </mapper>

+ 5 - 3
mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml

@@ -37,6 +37,7 @@
 		<result property="giveMemberRankId" column="give_member_rank_id_"/>
 		<result property="giveMemberTime" column="give_member_time_"/>
 		<result property="givePrizeNum" column="give_prize_num_"/>
+		<result property="giveAllowOnlineToOffline" column="give_allow_online_to_offline_"/>
 		<result property="memberRankId" column="member_rank_id_"/>
 		<result property="memberTime" column="member_time_"/>
 		<result property="courseType" column="course_type_"/>
@@ -70,13 +71,14 @@
 										student_max_used_times_, apply_to_student_type_,allow_online_to_offline_,
 										single_course_time_,discount_,full_minus_course_times_,give_course_type_,give_category_id_,give_course_num_
 										,member_rank_id_,member_time_,give_member_rank_id_,give_member_time_,course_type_,
-		                                activity_type_,give_sign_course_time_,is_pay_to_balance_,teach_mode_,give_teach_mode_,period_,give_period_,status_,market_price_,give_prize_num_)
+		                                activity_type_,give_sign_course_time_,is_pay_to_balance_,teach_mode_,give_teach_mode_,
+		                                period_,give_period_,status_,market_price_,give_allow_online_to_offline_,give_prize_num_)
 		VALUES(#{name},#{description},#{vipGroupCategoryIdList},#{startTime},#{endTime},#{organId},#{coursesStartTime},#{coursesEndTime},
 		       now(),now(),#{salarySettlementJson},#{delFlag},#{onlineClassJoinGradientRewards},
 		       #{offlineClassJoinGradientRewards},#{minCourseNum},#{maxCourseNum},#{studentMaxUsedTimes},#{applyToStudentType},#{allowOnlineToOffline},
 			   #{singleCourseTime},#{discount},#{fullMinusCourseTimes},#{giveCourseType},#{giveCategoryId},#{giveCourseNum}
 				  ,#{memberRankId},#{memberTime},#{giveMemberRankId},#{giveMemberTime},#{courseType},#{activityType},#{giveSingleCourseTime},
-		       #{isPayToBalance},#{teachMode},#{giveTeachMode},#{periodEnum},#{givePeriodEnum},#{status},#{marketPrice},#{givePrizeNum})
+		       #{isPayToBalance},#{teachMode},#{giveTeachMode},#{periodEnum},#{givePeriodEnum},#{status},#{marketPrice},#{giveAllowOnlineToOffline},#{givePrizeNum})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -95,7 +97,7 @@
 		online_class_join_gradient_rewards_=#{onlineClassJoinGradientRewards},
 		offline_class_join_gradient_rewards_=#{offlineClassJoinGradientRewards},min_course_num_=#{minCourseNum},
 		max_course_num_=#{maxCourseNum},student_max_used_times_=#{studentMaxUsedTimes},apply_to_student_type_=#{applyToStudentType},
-		allow_online_to_offline_=#{allowOnlineToOffline},end_time_ = #{endTime},market_price_ = #{marketPrice},give_prize_num_ = #{givePrizeNum},update_time_ = NOW() WHERE id_ = #{id}
+		allow_online_to_offline_=#{allowOnlineToOffline},end_time_ = #{endTime},market_price_ = #{marketPrice},update_time_ = NOW(),give_allow_online_to_offline_ = #{giveAllowOnlineToOffline},give_prize_num_ = #{givePrizeNum} WHERE id_ = #{id}
 	</update>
 
 	<!-- 根据主键删除一条记录 -->

+ 4 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherPracticeGroupController.java

@@ -45,7 +45,10 @@ public class TeacherPracticeGroupController extends BaseController {
 			return failed("用户信息获取失败");
 		}
 		Teacher teacher = teacherDao.get(sysUser.getId());
-		return succeed(practiceGroupSellPriceDao.get(teacher.getOrganId()));
+		if(Objects.isNull(teacher)){
+			return failed("请指定指导老师!");
+		}
+		return succeed(practiceGroupSellPriceDao.get(teacher.getTeacherOrganId()));
 	}
 
 	@ApiOperation("课酬总费用")