Browse Source

活动排课

zouxuan 3 years ago
parent
commit
fb0b398f94

+ 1 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupActivityDao.java

@@ -17,8 +17,7 @@ public interface VipGroupActivityDao extends BaseDAO<Integer, VipGroupActivity>
 	 */
 	List<VipGroupActivity> findByCategory(@Param("categoryId") Long categoryId,
 										  @Param("organIds") String organIds,
-										  @Param("applyToStudentType") Integer applyToStudentType,
-										  @Param("includeClosed") Boolean includeClosed);
+										  @Param("courseType") String courseType);
 
 	/**
 	 * 根据活动方案编号列表获取名称

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

@@ -1,10 +1,13 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.biz.dal.enums.PeriodEnum;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import com.ym.mec.biz.dal.enums.VipGroupActivityTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 对应数据库表(vip_group_activity):
@@ -72,13 +75,13 @@ public class VipGroupActivity {
 	private Integer memberRankId;
 
 	@ApiModelProperty(value = "会员时长")
-	private Integer memberTime;
+	private Integer memberTime = 0;
 
 	@ApiModelProperty(value = "赠送会员编号")
 	private Integer giveMemberRankId;
 
 	@ApiModelProperty(value = "赠送会员时长")
-	private Integer giveMemberTime;
+	private Integer giveMemberTime = 0;
 
 	@ApiModelProperty(value = "是否充值到余额")
 	private boolean isPayToBalance = true;
@@ -134,11 +137,51 @@ public class VipGroupActivity {
 	private Integer studentMaxUsedTimes;
 
 	@ApiModelProperty(value = "适用学生类型:-1:所有;0:老用户;1:新用户,2会员,3非会员")
-	private Integer  applyToStudentType = -1;
+	private String applyToStudentType;
 
 	@ApiModelProperty(value = "课程可调整方向:0双向可调,1禁止线上到线下,2禁止线下到线上,3双向不可调")
 	private Integer allowOnlineToOffline = 0;
 
+	private TeachModeEnum teachModeEnum;
+
+	private TeachModeEnum giveTeachModeEnum;
+
+	private PeriodEnum periodEnum;
+
+	private PeriodEnum givePeriodEnum;
+
+	public PeriodEnum getPeriodEnum() {
+		return periodEnum;
+	}
+
+	public void setPeriodEnum(PeriodEnum periodEnum) {
+		this.periodEnum = periodEnum;
+	}
+
+	public PeriodEnum getGivePeriodEnum() {
+		return givePeriodEnum;
+	}
+
+	public void setGivePeriodEnum(PeriodEnum givePeriodEnum) {
+		this.givePeriodEnum = givePeriodEnum;
+	}
+
+	public TeachModeEnum getTeachModeEnum() {
+		return teachModeEnum;
+	}
+
+	public void setTeachModeEnum(TeachModeEnum teachModeEnum) {
+		this.teachModeEnum = teachModeEnum;
+	}
+
+	public TeachModeEnum getGiveTeachModeEnum() {
+		return giveTeachModeEnum;
+	}
+
+	public void setGiveTeachModeEnum(TeachModeEnum giveTeachModeEnum) {
+		this.giveTeachModeEnum = giveTeachModeEnum;
+	}
+
 	public boolean isPayToBalance() {
 		return isPayToBalance;
 	}
@@ -475,11 +518,11 @@ public class VipGroupActivity {
 		this.studentMaxUsedTimes = studentMaxUsedTimes;
 	}
 
-	public Integer getApplyToStudentType() {
+	public String getApplyToStudentType() {
 		return applyToStudentType;
 	}
 
-	public void setApplyToStudentType(Integer applyToStudentType) {
+	public void setApplyToStudentType(String applyToStudentType) {
 		this.applyToStudentType = applyToStudentType;
 	}
 }

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

@@ -29,8 +29,7 @@ public interface VipGroupActivityService extends BaseService<Integer, VipGroupAc
      * @Date: 2019/10/2
      * 根据课程类型获取VIP课相关活动方案
      */
-    List<VipGroupActivity> findByVipGroupCategory(Long categoryId, String organIds, Integer teacherId,
-                                                  Integer applyToStudentType, Boolean includeClosed);
+    List<VipGroupActivity> findByVipGroupCategory(Long categoryId, String organIds,String courseType);
 
     /**
      * 导出vip活动

+ 50 - 20
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
 import com.ym.mec.biz.dal.dto.ExportVipGroupActivityDto;
@@ -10,7 +11,6 @@ import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.biz.dal.page.VipGroupActivityQueryInfo;
 import com.ym.mec.biz.event.source.EntityChangeEventSource;
-import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.VipGroupActivityService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
@@ -35,8 +35,6 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 	private TeacherDao teacherDao;
 	@Autowired
 	private EntityChangeEventSource entityChangeEventSource;
-	@Autowired
-	private SysConfigService sysConfigService;
 
 	@Override
 	public BaseDAO<Integer, VipGroupActivity> getDAO() {
@@ -49,6 +47,7 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 		if(Objects.isNull(vipGroupActivityAddDto.getOrganId())){
 			throw new BizException("请指定部门!");
 		}
+		vipGroupActivityAddDto.setApplyToStudentType(getApplyToStudentType(vipGroupActivityAddDto.getApplyToStudentType()));
 
 		VipGroupSalarySettlementDto vipGroupSalarySettlement = vipGroupActivityAddDto.getVipGroupSalarySettlement();
 		if(Objects.nonNull(vipGroupSalarySettlement.getOnlineSalarySettlement())){
@@ -93,6 +92,37 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 		super.insert(vipGroupActivityAddDto);
 	}
 
+	private String getApplyToStudentType(String applyToStudentType){
+		if(StringUtils.isNotEmpty(applyToStudentType)){
+			//0:老用户;1:新用户,2会员,3非会员
+			if(applyToStudentType.contains("0") && applyToStudentType.contains("1")){
+				applyToStudentType.replace("0","");
+				applyToStudentType.replace("1","");
+			}
+			if(applyToStudentType.contains("3") && applyToStudentType.contains("2")){
+				applyToStudentType.replace("2","");
+				applyToStudentType.replace("3","");
+			}
+			if(StringUtils.isNotEmpty(applyToStudentType)){
+				JSONObject applyToStudentTypeJson = new JSONObject();
+				if(applyToStudentType.contains("0")){
+					applyToStudentTypeJson.put("newStudent",0);
+				}
+				if(applyToStudentType.contains("1")){
+					applyToStudentTypeJson.put("newStudent",1);
+				}
+				if(applyToStudentType.contains("2")){
+					applyToStudentTypeJson.put("member",1);
+				}
+				if(applyToStudentType.contains("3")){
+					applyToStudentTypeJson.put("member",0);
+				}
+				applyToStudentType = applyToStudentTypeJson.toJSONString();
+			}
+		}
+		return applyToStudentType;
+	}
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void updateVipGroupActivity(VipGroupActivityAddDto vipGroupActivityAddDto, Integer operatorId) {
@@ -103,7 +133,7 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 		if(Objects.isNull(vipGroupActivityAddDto.getOrganId())){
 			throw new BizException("请指定部门!");
 		}
-
+		vipGroupActivityAddDto.setApplyToStudentType(getApplyToStudentType(vipGroupActivityAddDto.getApplyToStudentType()));
 		if(Objects.nonNull(vipGroupActivityAddDto.getVipGroupSalarySettlement().getOnlineSalarySettlement())){
 			switch (vipGroupActivityAddDto.getVipGroupSalarySettlement().getOnlineSalarySettlement().getSalarySettlementType()){
 				case TEACHER_DEFAULT:
@@ -151,25 +181,25 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 	}
 
 	@Override
-	public List<VipGroupActivity> findByVipGroupCategory(Long categoryId, String organIds, Integer teacherId, Integer applyToStudentType, Boolean includeClosed) {
+	public List<VipGroupActivity> findByVipGroupCategory(Long categoryId, String organIds, String courseType) {
 		if(Objects.isNull(categoryId)){
 			throw new BizException("请选择课程形态!");
 		}
-		if(Objects.isNull(teacherId)){
-			throw new BizException("请指定教师");
-		}
-		Teacher teacher = teacherDao.get(teacherId);
-		if(Objects.isNull(teacher)){
-			throw new BizException("未找到指定教师");
-		}
-		if(StringUtils.isBlank(organIds)){
-			organIds = teacher.getTeacherOrganId().toString();
-			if (StringUtils.isNotEmpty(teacher.getFlowOrganRange())) {
-				organIds += "," + teacher.getFlowOrganRange();
-			}
-		}
-
-		List<VipGroupActivity> vipGroupActivities = vipGroupActivityDao.findByCategory(categoryId, organIds, applyToStudentType, includeClosed);
+//		if(Objects.isNull(teacherId)){
+//			throw new BizException("请指定教师");
+//		}
+//		Teacher teacher = teacherDao.get(teacherId);
+//		if(Objects.isNull(teacher)){
+//			throw new BizException("未找到指定教师");
+//		}
+//		if(StringUtils.isBlank(organIds)){
+//			organIds = teacher.getTeacherOrganId().toString();
+//			if (StringUtils.isNotEmpty(teacher.getFlowOrganRange())) {
+//				organIds += "," + teacher.getFlowOrganRange();
+//			}
+//		}
+
+		List<VipGroupActivity> vipGroupActivities = vipGroupActivityDao.findByCategory(categoryId, organIds,courseType);
 
 		return vipGroupActivities;
 	}

+ 20 - 2
mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml

@@ -50,6 +50,10 @@
 		<result property="activityType" column="activity_type_"/>
 		<result property="giveSingleCourseTime" column="give_sign_course_time_"/>
 		<result property="payToBalance" column="is_pay_to_balance_"/>
+		<result property="teachModeEnum" column="teach_mode_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+		<result property="giveTeachModeEnum" column="give_teach_mode_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+		<result property="periodEnum" column="period_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+		<result property="givePeriodEnum" column="give_period_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -70,18 +74,31 @@
 										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_)
+		                                activity_type_,give_sign_course_time_,is_pay_to_balance_,teach_mode_,give_teach_mode_,period_,give_period_)
 		VALUES(#{name},#{description},#{vipGroupCategoryIdList},#{startTime},#{endTime},#{organId},#{coursesStartTime},#{coursesEndTime},#{type},#{attribute1},#{attribute2},#{attribute3},
 		       #{salaryReadonlyFlag},#{giveClassPaySalaryFlag},now(),now(),#{salarySettlementJson},#{delFlag},#{paymentReadonlyFlag},#{onlineClassJoinGradientRewards},
 		       #{offlineClassJoinGradientRewards},#{minCourseNum},#{maxCourseNum},#{studentMaxUsedTimes},#{applyToStudentType},#{allowOnlineToOffline},
 			   #{singleCourseTime},#{discount},#{fullMinusCourseTimes},#{giveCourseType},#{giveCategoryId},#{giveCourseNum}
-				  ,#{memberRankId},#{memberTime},#{giveMemberRankId},#{giveMemberTime},#{courseType},#{activityType},#{giveSingleCourseTime},#{isPayToBalance})
+				  ,#{memberRankId},#{memberTime},#{giveMemberRankId},#{giveMemberTime},#{courseType},#{activityType},#{giveSingleCourseTime},
+		       #{isPayToBalance},#{teachModeEnum},#{giveTeachModeEnum},#{periodEnum},#{givePeriodEnum})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.VipGroupActivity">
 		UPDATE vip_group_activity
 		<set>
+			<if test="give_period_ != null">
+				give_period_ = #{givePeriodEnum},
+			</if>
+			<if test="period_ != null">
+				period_ = #{periodEnum},
+			</if>
+			<if test="give_teach_mode_ != null">
+				give_teach_mode_ = #{giveTeachModeEnum},
+			</if>
+			<if test="teach_mode_ != null">
+				teach_mode_ = #{teachModeEnum},
+			</if>
 			<if test="is_pay_to_balance_ != null">
 				is_pay_to_balance_ = #{isPayToBalance},
 			</if>
@@ -261,6 +278,7 @@
 				AND (end_time_ IS NULL OR NOW() BETWEEN start_time_ AND end_time_)
 			</if>
 			AND del_flag_=0
+			AND course_type_ = #{courseType}
 			AND INTE_ARRAY(organ_id_,#{organIds})
 			<if test="applyToStudentType!=null">
 				AND (apply_to_student_type_=#{applyToStudentType} OR apply_to_student_type_=-1)

+ 28 - 25
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupActivityController.java

@@ -15,16 +15,13 @@ import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.VipGroupActivityService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.exception.BizException;
-
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -107,31 +104,37 @@ public class VipGroupActivityController extends BaseController {
     @ApiOperation(value = "根据课程类型获取对应课程活动方案")
     @GetMapping("/findByVipGroupCategory")
     @PreAuthorize("@pcs.hasPermissions('vipGroupActivity/findByVipGroupCategory')")
-    public Object findByVipGroupCategory(Long categoryId, String studentIds, Integer teacherId){
-        if(StringUtils.isBlank(studentIds)){
-            return failed("请选择学员");
+    public Object findByVipGroupCategory(Long categoryId,String organId,String courseType){
+        if(StringUtils.isBlank(courseType)){
+            return failed("请选择课程类型");
         }
-        List<Integer> userIds = Arrays.stream(studentIds.split(",")).map(id -> Integer.valueOf(id)).collect(Collectors.toList());
-        List<Student> students = studentDao.findByStudentIds(userIds);
-        if(CollectionUtils.isEmpty(students)||students.size()!=userIds.size()){
-            return failed("学员信息不存在");
+        if(StringUtils.isBlank(organId)){
+            return failed("请选择分部");
         }
-        long newStudentNum = students.stream().filter(s -> s.getIsNewUser()).count();
-
-        Integer applyToStudentType = -1;
-        if(newStudentNum==0){
-            applyToStudentType = 0;
-        }else if(newStudentNum==userIds.size()){
-            applyToStudentType = 1;
+        if(categoryId == null){
+            return failed("请选择课程形式");
         }
-
-        SysUser student = teacherDao.getUser(userIds.get(0));
-        if(Objects.isNull(student)){
-            return failed("学员信息不存在");
-        }
-        String organIds = student.getOrganId().toString();
-
-        List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.findByVipGroupCategory(categoryId, organIds, teacherId, applyToStudentType, null);
+//        List<Integer> userIds = Arrays.stream(studentIds.split(",")).map(id -> Integer.valueOf(id)).collect(Collectors.toList());
+//        List<Student> students = studentDao.findByStudentIds(userIds);
+//        if(CollectionUtils.isEmpty(students)||students.size()!=userIds.size()){
+//            return failed("学员信息不存在");
+//        }
+//        long newStudentNum = students.stream().filter(s -> s.getIsNewUser()).count();
+
+//        Integer applyToStudentType = -1;
+//        if(newStudentNum==0){
+//            applyToStudentType = 0;
+//        }else if(newStudentNum==userIds.size()){
+//            applyToStudentType = 1;
+//        }
+
+//        SysUser student = teacherDao.getUser(userIds.get(0));
+//        if(Objects.isNull(student)){
+//            return failed("学员信息不存在");
+//        }
+//        String organIds = student.getOrganId().toString();
+
+        List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.findByVipGroupCategory(categoryId, organId, courseType);
 
         SysConfig doubleElevenIdConfig = sysConfigService.findByParamName(SysConfigService.VIP_SPECIAL_ACTIVITY_IDS);
         if(Objects.nonNull(doubleElevenIdConfig)&&StringUtils.isNotBlank(doubleElevenIdConfig.getParanValue())){