瀏覽代碼

活动排课

zouxuan 3 年之前
父節點
當前提交
1316c88278
共有 21 個文件被更改,包括 981 次插入444 次删除
  1. 1 1
      codegen/src/main/resources/generateConfigration.xml
  2. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ActivityApplyStudentTypeDao.java
  3. 2 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupActivityDao.java
  4. 114 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityQueryDto.java
  5. 60 13
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupCostCountParamsDto.java
  6. 56 12
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupSalarySettlementDto.java
  7. 59 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ActivityApplyStudentType.java
  8. 180 169
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java
  9. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ActivityApplyStudentTypeService.java
  10. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ActivityPlanService.java
  11. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupActivityService.java
  12. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java
  13. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityApplyStudentTypeServiceImpl.java
  14. 62 111
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java
  15. 222 50
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  16. 57 0
      mec-biz/src/main/resources/config/mybatis/ActivityApplyStudentTypeMapper.xml
  17. 2 1
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  18. 24 20
      mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml
  19. 36 22
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/VipGroupActivityController.java
  20. 27 24
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupActivityController.java
  21. 20 16
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduVipGroupActivityController.java

+ 1 - 1
codegen/src/main/resources/generateConfigration.xml

@@ -8,7 +8,7 @@
 		<catalog>mec_test</catalog>
 		<schema>mec_test</schema>
 	</dbConfiguration>
-	<srcBase>e:/javabean</srcBase>
+	<srcBase>/Users/chenxiaoyu/Documents/javabean</srcBase>
 	<pojoPackageName>com.ym.mec.biz.dal.entity</pojoPackageName>
 	<daoPackageName>com.ym.mec.biz.dal.dao</daoPackageName>
 	<servicePackageName>com.ym.mec.biz.service</servicePackageName>

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ActivityApplyStudentTypeDao.java

@@ -0,0 +1,12 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.ActivityApplyStudentType;
+
+public interface ActivityApplyStudentTypeDao extends BaseDAO<Integer, ActivityApplyStudentType> {
+
+
+    void deleteByActivity(Integer activityId);
+
+    void updateByActivity(ActivityApplyStudentType applyToStudentType);
+}

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.ActivityQueryDto;
 import com.ym.mec.biz.dal.dto.ExportVipGroupActivityDto;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.common.dal.BaseDAO;
@@ -15,9 +16,7 @@ public interface VipGroupActivityDao extends BaseDAO<Integer, VipGroupActivity>
 	 * @Date: 2019/10/2
 	 * 根据课程类型获取vip课 活动方案
 	 */
-	List<VipGroupActivity> findByCategory(@Param("categoryId") Long categoryId,
-										  @Param("organIds") String organIds,
-										  @Param("courseType") String courseType);
+	List<VipGroupActivity> findByCategory(@Param("activityQueryDto") ActivityQueryDto activityQueryDto);
 
 	/**
 	 * 根据活动方案编号列表获取名称

+ 114 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityQueryDto.java

@@ -0,0 +1,114 @@
+package com.ym.mec.biz.dal.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class ActivityQueryDto{
+
+    @ApiModelProperty(value = "课程形式")
+    private Long categoryId;
+
+    @ApiModelProperty(value = "分部")
+    private String organId;
+
+    @ApiModelProperty(value = "课程类型")
+    private String courseType = "VIP";
+
+    @ApiModelProperty(value = "学员列表")
+    private String studentIds;
+
+    @ApiModelProperty(value = "活动类型0课程1会员,默认0")
+    private Integer activityType = 0;
+
+    @ApiModelProperty(value = "0非会员,1会员")
+    private Integer memberNum = -1;
+
+    @ApiModelProperty(value = "0老用户,1新用户")
+    private Integer newStudentNum = -1;
+
+    private Boolean includeClosed;
+
+    private boolean onlySpecialActivity;
+
+    private Integer teacherId;
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public boolean isOnlySpecialActivity() {
+        return onlySpecialActivity;
+    }
+
+    public void setOnlySpecialActivity(boolean onlySpecialActivity) {
+        this.onlySpecialActivity = onlySpecialActivity;
+    }
+
+    public Boolean getIncludeClosed() {
+        return includeClosed;
+    }
+
+    public void setIncludeClosed(Boolean includeClosed) {
+        this.includeClosed = includeClosed;
+    }
+
+    public Integer getMemberNum() {
+        return memberNum;
+    }
+
+    public void setMemberNum(Integer memberNum) {
+        this.memberNum = memberNum;
+    }
+
+    public Integer getNewStudentNum() {
+        return newStudentNum;
+    }
+
+    public void setNewStudentNum(Integer newStudentNum) {
+        this.newStudentNum = newStudentNum;
+    }
+
+    public Long getCategoryId() {
+        return categoryId;
+    }
+
+    public void setCategoryId(Long categoryId) {
+        this.categoryId = categoryId;
+    }
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
+    public String getCourseType() {
+        return courseType;
+    }
+
+    public void setCourseType(String courseType) {
+        this.courseType = courseType;
+    }
+
+    public String getStudentIds() {
+        return studentIds;
+    }
+
+    public void setStudentIds(String studentIds) {
+        this.studentIds = studentIds;
+    }
+
+    public Integer getActivityType() {
+        return activityType;
+    }
+
+    public void setActivityType(Integer activityType) {
+        this.activityType = activityType;
+    }
+}

+ 60 - 13
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupCostCountParamsDto.java

@@ -2,26 +2,40 @@ package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 
+import java.math.BigDecimal;
+
 /**
  * @Author Joburgess
  * @Date 2019/10/1
  */
 public class VipGroupCostCountParamsDto {
 
-    @ApiModelProperty("vip课程类型编号")
+    @ApiModelProperty("课程类型编号")
     private Integer vipGroupCategoryId;
 
-    @ApiModelProperty("vip课默认课程单价编号")
+    @ApiModelProperty("默认课程单价编号")
     private Long vipGroupDefaultClassesUnitPriceId;
 
-    @ApiModelProperty("VIP课活动方案编号")
+    @ApiModelProperty("活动方案编号")
     private Long vipGroupActivityId;
 
     @ApiModelProperty(value = "线上课课时数", required = false)
-    private Integer onlineClassesNum;
+    private BigDecimal vipOnlineClassesNum = BigDecimal.ZERO;
 
     @ApiModelProperty(value = "线下课课时数", required = false)
-    private Integer offlineClassesNum;
+    private BigDecimal vipOfflineClassesNum = BigDecimal.ZERO;
+
+    @ApiModelProperty(value = "赠送线上课课时数", required = false)
+    private BigDecimal giveVipOnlineClassesNum = BigDecimal.ZERO;
+
+    @ApiModelProperty(value = "赠送线下课课时数", required = false)
+    private BigDecimal giveVipOfflineClassesNum = BigDecimal.ZERO;
+
+    @ApiModelProperty(value = "网管课课时数", required = false)
+    private BigDecimal practiceClassesNum = BigDecimal.ZERO;
+
+    @ApiModelProperty(value = "赠送网管课课时数", required = false)
+    private BigDecimal givePracticeClassesNum = BigDecimal.ZERO;
 
     public Integer getVipGroupCategoryId() {
         return vipGroupCategoryId;
@@ -47,19 +61,52 @@ public class VipGroupCostCountParamsDto {
         this.vipGroupActivityId = vipGroupActivityId;
     }
 
-    public Integer getOnlineClassesNum() {
-        return onlineClassesNum;
+    public BigDecimal getVipOnlineClassesNum() {
+        return vipOnlineClassesNum;
+    }
+
+    public void setVipOnlineClassesNum(BigDecimal vipOnlineClassesNum) {
+        this.vipOnlineClassesNum = vipOnlineClassesNum;
+    }
+
+    public BigDecimal getVipOfflineClassesNum() {
+        return vipOfflineClassesNum;
+    }
+
+    public void setVipOfflineClassesNum(BigDecimal vipOfflineClassesNum) {
+        this.vipOfflineClassesNum = vipOfflineClassesNum;
     }
 
-    public void setOnlineClassesNum(Integer onlineClassesNum) {
-        this.onlineClassesNum = onlineClassesNum;
+    public BigDecimal getGiveVipOnlineClassesNum() {
+        return giveVipOnlineClassesNum;
     }
 
-    public Integer getOfflineClassesNum() {
-        return offlineClassesNum;
+    public void setGiveVipOnlineClassesNum(BigDecimal giveVipOnlineClassesNum) {
+        this.giveVipOnlineClassesNum = giveVipOnlineClassesNum;
     }
 
-    public void setOfflineClassesNum(Integer offlineClassesNum) {
-        this.offlineClassesNum = offlineClassesNum;
+    public BigDecimal getGiveVipOfflineClassesNum() {
+        return giveVipOfflineClassesNum;
+    }
+
+    public void setGiveVipOfflineClassesNum(BigDecimal giveVipOfflineClassesNum) {
+        this.giveVipOfflineClassesNum = giveVipOfflineClassesNum;
+    }
+
+    public BigDecimal getPracticeClassesNum() {
+        return practiceClassesNum;
+    }
+
+    public void setPracticeClassesNum(BigDecimal practiceClassesNum) {
+        this.practiceClassesNum = practiceClassesNum;
+    }
+
+    public BigDecimal getGivePracticeClassesNum() {
+        return givePracticeClassesNum;
+    }
+
+    public void setGivePracticeClassesNum(BigDecimal givePracticeClassesNum) {
+        this.givePracticeClassesNum = givePracticeClassesNum;
     }
 }
+

+ 56 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupSalarySettlementDto.java

@@ -10,25 +10,69 @@ import java.io.Serializable;
  */
 public class VipGroupSalarySettlementDto implements Serializable {
 
-    @ApiModelProperty("上课收费标准")
-    private VipGroupSalarySettlementTypeDto onlineSalarySettlement;
+    @ApiModelProperty("收费VIP线上课收费标准")
+    private VipGroupSalarySettlementTypeDto vipOnlineSalarySettlement;
 
-    @ApiModelProperty("线下课收费标准")
-    private VipGroupSalarySettlementTypeDto offlineSalarySettlement;
+    @ApiModelProperty("收费VIP线下课收费标准")
+    private VipGroupSalarySettlementTypeDto vipOfflineSalarySettlement;
 
-    public VipGroupSalarySettlementTypeDto getOnlineSalarySettlement() {
-        return onlineSalarySettlement;
+    @ApiModelProperty("赠送VIP线上课收费标准")
+    private VipGroupSalarySettlementTypeDto giveVipOnlineSalarySettlement;
+
+    @ApiModelProperty("赠送VIP线下课收费标准")
+    private VipGroupSalarySettlementTypeDto giveVipOfflineSalarySettlement;
+
+    @ApiModelProperty("网管课收费标准")
+    private VipGroupSalarySettlementTypeDto practiceSalarySettlement;
+
+    @ApiModelProperty("赠送网管课收费标准")
+    private VipGroupSalarySettlementTypeDto givePracticeSalarySettlement;
+
+    public VipGroupSalarySettlementTypeDto getVipOnlineSalarySettlement() {
+        return vipOnlineSalarySettlement;
+    }
+
+    public void setVipOnlineSalarySettlement(VipGroupSalarySettlementTypeDto vipOnlineSalarySettlement) {
+        this.vipOnlineSalarySettlement = vipOnlineSalarySettlement;
+    }
+
+    public VipGroupSalarySettlementTypeDto getVipOfflineSalarySettlement() {
+        return vipOfflineSalarySettlement;
+    }
+
+    public void setVipOfflineSalarySettlement(VipGroupSalarySettlementTypeDto vipOfflineSalarySettlement) {
+        this.vipOfflineSalarySettlement = vipOfflineSalarySettlement;
+    }
+
+    public VipGroupSalarySettlementTypeDto getGiveVipOnlineSalarySettlement() {
+        return giveVipOnlineSalarySettlement;
+    }
+
+    public void setGiveVipOnlineSalarySettlement(VipGroupSalarySettlementTypeDto giveVipOnlineSalarySettlement) {
+        this.giveVipOnlineSalarySettlement = giveVipOnlineSalarySettlement;
+    }
+
+    public VipGroupSalarySettlementTypeDto getGiveVipOfflineSalarySettlement() {
+        return giveVipOfflineSalarySettlement;
+    }
+
+    public void setGiveVipOfflineSalarySettlement(VipGroupSalarySettlementTypeDto giveVipOfflineSalarySettlement) {
+        this.giveVipOfflineSalarySettlement = giveVipOfflineSalarySettlement;
+    }
+
+    public VipGroupSalarySettlementTypeDto getPracticeSalarySettlement() {
+        return practiceSalarySettlement;
     }
 
-    public void setOnlineSalarySettlement(VipGroupSalarySettlementTypeDto onlineSalarySettlement) {
-        this.onlineSalarySettlement = onlineSalarySettlement;
+    public void setPracticeSalarySettlement(VipGroupSalarySettlementTypeDto practiceSalarySettlement) {
+        this.practiceSalarySettlement = practiceSalarySettlement;
     }
 
-    public VipGroupSalarySettlementTypeDto getOfflineSalarySettlement() {
-        return offlineSalarySettlement;
+    public VipGroupSalarySettlementTypeDto getGivePracticeSalarySettlement() {
+        return givePracticeSalarySettlement;
     }
 
-    public void setOfflineSalarySettlement(VipGroupSalarySettlementTypeDto offlineSalarySettlement) {
-        this.offlineSalarySettlement = offlineSalarySettlement;
+    public void setGivePracticeSalarySettlement(VipGroupSalarySettlementTypeDto givePracticeSalarySettlement) {
+        this.givePracticeSalarySettlement = givePracticeSalarySettlement;
     }
 }

+ 59 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ActivityApplyStudentType.java

@@ -0,0 +1,59 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(activity_apply_student_type):
+ */
+public class ActivityApplyStudentType {
+
+	/**  */
+	private Integer id;
+	
+	/** 是否是新学员1是0否 */
+	private Integer newStudent = -1;
+	
+	/** 是否会员 */
+	private Integer memberFlag = -1;
+	
+	/** 活动编号 */
+	private Integer activityId;
+	
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setNewStudent(Integer newStudent){
+		this.newStudent = newStudent;
+	}
+	
+	public Integer getNewStudent(){
+		return this.newStudent;
+	}
+			
+	public void setMemberFlag(Integer memberFlag){
+		this.memberFlag = memberFlag;
+	}
+	
+	public Integer getMemberFlag(){
+		return this.memberFlag;
+	}
+			
+	public void setActivityId(Integer activityId){
+		this.activityId = activityId;
+	}
+	
+	public Integer getActivityId(){
+		return this.activityId;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

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

@@ -1,13 +1,12 @@
 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;
+
+import static com.ym.mec.biz.dal.enums.PeriodEnum.MONTH;
 
 /**
  * 对应数据库表(vip_group_activity):
@@ -60,10 +59,10 @@ public class VipGroupActivity {
 	private Integer fullMinusCourseTimes = -1;
 
 	@ApiModelProperty(value = "赠课类型")
-	private String giveCourseType;
+	private String giveCourseType = "VIP";
 
 	@ApiModelProperty(value = "课类型")
-	private String courseType;
+	private String courseType = "VIP";
 
 	@ApiModelProperty(value = "赠课形式")
 	private String giveCategoryId;
@@ -72,13 +71,13 @@ public class VipGroupActivity {
 	private Integer giveCourseNum = 0;
 
 	@ApiModelProperty(value = "会员编号")
-	private Integer memberRankId;
+	private Integer memberRankId = 1;
 
 	@ApiModelProperty(value = "会员时长")
 	private Integer memberTime = 0;
 
 	@ApiModelProperty(value = "赠送会员编号")
-	private Integer giveMemberRankId;
+	private Integer giveMemberRankId = 1;
 
 	@ApiModelProperty(value = "赠送会员时长")
 	private Integer giveMemberTime = 0;
@@ -96,13 +95,13 @@ public class VipGroupActivity {
 	private String attribute3;
 
 	@ApiModelProperty(value = "薪水只读标识(1-只读 0-可写)")
-	private String salaryReadonlyFlag;
+	private Integer salaryReadonlyFlag = 0;
 
 	@ApiModelProperty(value = "单节课程费用只读标识")
-	private String paymentReadonlyFlag;
+	private Integer paymentReadonlyFlag = 1;
 
 	@ApiModelProperty(value = "赠送课时支付薪水标识(1-计课酬  0-不计课酬)")
-	private String giveClassPaySalaryFlag;
+	private Integer giveClassPaySalaryFlag = 1;
 
 	@ApiModelProperty(value = "创建时间")
 	private java.util.Date createTime;
@@ -119,22 +118,22 @@ public class VipGroupActivity {
 	private Boolean delFlag = false;
 
 	@ApiModelProperty(value = "是否可用")
-	private Integer enable;
+	private Boolean enable = false;
 
 	@ApiModelProperty(value = "线上课是否参与梯度奖励")
-	private Integer onlineClassJoinGradientRewards;
+	private Integer onlineClassJoinGradientRewards = 0;
 
 	@ApiModelProperty(value = "线下课是否参与梯度奖励")
-	private Integer offlineClassJoinGradientRewards;
+	private Integer offlineClassJoinGradientRewards = 0;
 
 	@ApiModelProperty(value = "最少课程数量")
-	private Integer minCourseNum;
+	private Integer minCourseNum = -1;
 
 	@ApiModelProperty(value = "最多可排课数量")
-	private Integer maxCourseNum;
+	private Integer maxCourseNum = -1;
 
 	@ApiModelProperty(value = "每位学员最大购买次数")
-	private Integer studentMaxUsedTimes;
+	private Integer studentMaxUsedTimes = -1;
 
 	@ApiModelProperty(value = "适用学生类型:-1:所有;0:老用户;1:新用户,2会员,3非会员")
 	private String applyToStudentType;
@@ -142,156 +141,24 @@ public class VipGroupActivity {
 	@ApiModelProperty(value = "课程可调整方向:0双向可调,1禁止线上到线下,2禁止线下到线上,3双向不可调")
 	private Integer allowOnlineToOffline = 0;
 
-	private TeachModeEnum teachModeEnum;
-
-	private TeachModeEnum giveTeachModeEnum;
+	@ApiModelProperty(value = "-1:所有;0:线上;1:线下")
+	private Integer teachMode = -1;
 
-	private PeriodEnum periodEnum;
+	@ApiModelProperty(value = "-1:所有;0:线上;1:线下")
+	private Integer giveTeachMode = -1;
 
-	private PeriodEnum givePeriodEnum;
-
-	public PeriodEnum getPeriodEnum() {
-		return periodEnum;
-	}
-
-	public void setPeriodEnum(PeriodEnum periodEnum) {
-		this.periodEnum = periodEnum;
-	}
+	private PeriodEnum periodEnum = MONTH;
 
-	public PeriodEnum getGivePeriodEnum() {
-		return givePeriodEnum;
-	}
+	private PeriodEnum givePeriodEnum = MONTH;
 
-	public void setGivePeriodEnum(PeriodEnum givePeriodEnum) {
-		this.givePeriodEnum = givePeriodEnum;
-	}
+	private String status = "DRAFT";
 
-	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;
-	}
-
-	public void setPayToBalance(boolean payToBalance) {
-		isPayToBalance = payToBalance;
-	}
-
-	public Integer getGiveMemberRankId() {
-		return giveMemberRankId;
+	public String getStatus() {
+		return status;
 	}
 
-	public void setGiveMemberRankId(Integer giveMemberRankId) {
-		this.giveMemberRankId = giveMemberRankId;
-	}
-
-	public Integer getGiveMemberTime() {
-		return giveMemberTime;
-	}
-
-	public void setGiveMemberTime(Integer giveMemberTime) {
-		this.giveMemberTime = giveMemberTime;
-	}
-
-	public Integer getGiveSingleCourseTime() {
-		return giveSingleCourseTime;
-	}
-
-	public void setGiveSingleCourseTime(Integer giveSingleCourseTime) {
-		this.giveSingleCourseTime = giveSingleCourseTime;
-	}
-
-	public String getCourseType() {
-		return courseType;
-	}
-
-	public void setCourseType(String courseType) {
-		this.courseType = courseType;
-	}
-
-	public Integer getAllowOnlineToOffline() {
-		return allowOnlineToOffline;
-	}
-
-	public void setAllowOnlineToOffline(Integer allowOnlineToOffline) {
-		this.allowOnlineToOffline = allowOnlineToOffline;
-	}
-
-	public String getAttribute1() {
-		return attribute1;
-	}
-
-	public void setAttribute1(String attribute1) {
-		this.attribute1 = attribute1;
-	}
-
-	public String getAttribute2() {
-		return attribute2;
-	}
-
-	public void setAttribute2(String attribute2) {
-		this.attribute2 = attribute2;
-	}
-
-	public String getAttribute3() {
-		return attribute3;
-	}
-
-	public void setAttribute3(String attribute3) {
-		this.attribute3 = attribute3;
-	}
-
-	public String getSalaryReadonlyFlag() {
-		return salaryReadonlyFlag;
-	}
-
-	public void setSalaryReadonlyFlag(String salaryReadonlyFlag) {
-		this.salaryReadonlyFlag = salaryReadonlyFlag;
-	}
-
-	public String getPaymentReadonlyFlag() {
-		return paymentReadonlyFlag;
-	}
-
-	public void setPaymentReadonlyFlag(String paymentReadonlyFlag) {
-		this.paymentReadonlyFlag = paymentReadonlyFlag;
-	}
-
-	public String getGiveClassPaySalaryFlag() {
-		return giveClassPaySalaryFlag;
-	}
-
-	public void setGiveClassPaySalaryFlag(String giveClassPaySalaryFlag) {
-		this.giveClassPaySalaryFlag = giveClassPaySalaryFlag;
-	}
-
-	public Integer getOnlineClassJoinGradientRewards() {
-		return onlineClassJoinGradientRewards;
-	}
-
-	public void setOnlineClassJoinGradientRewards(Integer onlineClassJoinGradientRewards) {
-		this.onlineClassJoinGradientRewards = onlineClassJoinGradientRewards;
-	}
-
-	public Integer getOfflineClassJoinGradientRewards() {
-		return offlineClassJoinGradientRewards;
-	}
-
-	public void setOfflineClassJoinGradientRewards(Integer offlineClassJoinGradientRewards) {
-		this.offlineClassJoinGradientRewards = offlineClassJoinGradientRewards;
+	public void setStatus(String status) {
+		this.status = status;
 	}
 
 	public Integer getId() {
@@ -318,14 +185,6 @@ public class VipGroupActivity {
 		this.activityType = activityType;
 	}
 
-	public VipGroupActivityTypeEnum getType() {
-		return type;
-	}
-
-	public void setType(VipGroupActivityTypeEnum type) {
-		this.type = type;
-	}
-
 	public Integer getSingleCourseTime() {
 		return singleCourseTime;
 	}
@@ -334,6 +193,14 @@ public class VipGroupActivity {
 		this.singleCourseTime = singleCourseTime;
 	}
 
+	public Integer getGiveSingleCourseTime() {
+		return giveSingleCourseTime;
+	}
+
+	public void setGiveSingleCourseTime(Integer giveSingleCourseTime) {
+		this.giveSingleCourseTime = giveSingleCourseTime;
+	}
+
 	public String getDescription() {
 		return description;
 	}
@@ -390,6 +257,14 @@ public class VipGroupActivity {
 		this.coursesEndTime = coursesEndTime;
 	}
 
+	public VipGroupActivityTypeEnum getType() {
+		return type;
+	}
+
+	public void setType(VipGroupActivityTypeEnum type) {
+		this.type = type;
+	}
+
 	public BigDecimal getDiscount() {
 		return discount;
 	}
@@ -414,6 +289,14 @@ public class VipGroupActivity {
 		this.giveCourseType = giveCourseType;
 	}
 
+	public String getCourseType() {
+		return courseType;
+	}
+
+	public void setCourseType(String courseType) {
+		this.courseType = courseType;
+	}
+
 	public String getGiveCategoryId() {
 		return giveCategoryId;
 	}
@@ -446,6 +329,78 @@ public class VipGroupActivity {
 		this.memberTime = memberTime;
 	}
 
+	public Integer getGiveMemberRankId() {
+		return giveMemberRankId;
+	}
+
+	public void setGiveMemberRankId(Integer giveMemberRankId) {
+		this.giveMemberRankId = giveMemberRankId;
+	}
+
+	public Integer getGiveMemberTime() {
+		return giveMemberTime;
+	}
+
+	public void setGiveMemberTime(Integer giveMemberTime) {
+		this.giveMemberTime = giveMemberTime;
+	}
+
+	public boolean isPayToBalance() {
+		return isPayToBalance;
+	}
+
+	public void setPayToBalance(boolean payToBalance) {
+		isPayToBalance = payToBalance;
+	}
+
+	public String getAttribute1() {
+		return attribute1;
+	}
+
+	public void setAttribute1(String attribute1) {
+		this.attribute1 = attribute1;
+	}
+
+	public String getAttribute2() {
+		return attribute2;
+	}
+
+	public void setAttribute2(String attribute2) {
+		this.attribute2 = attribute2;
+	}
+
+	public String getAttribute3() {
+		return attribute3;
+	}
+
+	public void setAttribute3(String attribute3) {
+		this.attribute3 = attribute3;
+	}
+
+	public Integer getSalaryReadonlyFlag() {
+		return salaryReadonlyFlag;
+	}
+
+	public void setSalaryReadonlyFlag(Integer salaryReadonlyFlag) {
+		this.salaryReadonlyFlag = salaryReadonlyFlag;
+	}
+
+	public Integer getPaymentReadonlyFlag() {
+		return paymentReadonlyFlag;
+	}
+
+	public void setPaymentReadonlyFlag(Integer paymentReadonlyFlag) {
+		this.paymentReadonlyFlag = paymentReadonlyFlag;
+	}
+
+	public Integer getGiveClassPaySalaryFlag() {
+		return giveClassPaySalaryFlag;
+	}
+
+	public void setGiveClassPaySalaryFlag(Integer giveClassPaySalaryFlag) {
+		this.giveClassPaySalaryFlag = giveClassPaySalaryFlag;
+	}
+
 	public Date getCreateTime() {
 		return createTime;
 	}
@@ -486,14 +441,30 @@ public class VipGroupActivity {
 		this.delFlag = delFlag;
 	}
 
-	public Integer getEnable() {
+	public Boolean getEnable() {
 		return enable;
 	}
 
-	public void setEnable(Integer enable) {
+	public void setEnable(Boolean enable) {
 		this.enable = enable;
 	}
 
+	public Integer getOnlineClassJoinGradientRewards() {
+		return onlineClassJoinGradientRewards;
+	}
+
+	public void setOnlineClassJoinGradientRewards(Integer onlineClassJoinGradientRewards) {
+		this.onlineClassJoinGradientRewards = onlineClassJoinGradientRewards;
+	}
+
+	public Integer getOfflineClassJoinGradientRewards() {
+		return offlineClassJoinGradientRewards;
+	}
+
+	public void setOfflineClassJoinGradientRewards(Integer offlineClassJoinGradientRewards) {
+		this.offlineClassJoinGradientRewards = offlineClassJoinGradientRewards;
+	}
+
 	public Integer getMinCourseNum() {
 		return minCourseNum;
 	}
@@ -525,4 +496,44 @@ public class VipGroupActivity {
 	public void setApplyToStudentType(String applyToStudentType) {
 		this.applyToStudentType = applyToStudentType;
 	}
+
+	public Integer getAllowOnlineToOffline() {
+		return allowOnlineToOffline;
+	}
+
+	public void setAllowOnlineToOffline(Integer allowOnlineToOffline) {
+		this.allowOnlineToOffline = allowOnlineToOffline;
+	}
+
+	public Integer getTeachMode() {
+		return teachMode;
+	}
+
+	public void setTeachMode(Integer teachMode) {
+		this.teachMode = teachMode;
+	}
+
+	public Integer getGiveTeachMode() {
+		return giveTeachMode;
+	}
+
+	public void setGiveTeachMode(Integer giveTeachMode) {
+		this.giveTeachMode = giveTeachMode;
+	}
+
+	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;
+	}
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ActivityApplyStudentTypeService.java

@@ -0,0 +1,10 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.ActivityApplyStudentType;
+import com.ym.mec.common.service.BaseService;
+import org.springframework.stereotype.Service;
+
+@Service
+public interface ActivityApplyStudentTypeService extends BaseService<Integer, ActivityApplyStudentType> {
+
+}

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

@@ -3,7 +3,9 @@ package com.ym.mec.biz.service;
 import com.ym.mec.biz.dal.dto.ActivityPlanAddDto;
 import com.ym.mec.biz.dal.entity.ActivityPlan;
 import com.ym.mec.common.service.BaseService;
+import org.springframework.stereotype.Service;
 
+@Service
 public interface ActivityPlanService extends BaseService<Integer, ActivityPlan> {
 
     /**

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.ActivityQueryDto;
 import com.ym.mec.biz.dal.dto.ExportVipGroupActivityDto;
 import com.ym.mec.biz.dal.dto.VipGroupActivityAddDto;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
@@ -29,7 +30,7 @@ public interface VipGroupActivityService extends BaseService<Integer, VipGroupAc
      * @Date: 2019/10/2
      * 根据课程类型获取VIP课相关活动方案
      */
-    List<VipGroupActivity> findByVipGroupCategory(Long categoryId, String organIds,String courseType);
+    List<VipGroupActivity> findByVipGroupCategory(ActivityQueryDto activityQueryDto);
 
     /**
      * 导出vip活动

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

@@ -184,6 +184,18 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
                                                                          Long courseId);
 
     /**
+     * @describe 计算vip课程购买总价,及老师课酬
+     * @author Joburgess
+     * @date 2019/10/23
+     * @param vipGroup: vip课程
+     * @param teacherId: 要计算课酬的老师的编号
+     * @return java.util.Map
+     */
+    <K extends VipGroup> Map<String, BigDecimal> countVipGroupPredictFee1(K vipGroup,
+                                                                         Integer teacherId,
+                                                                         Long courseId);
+
+    /**
      * @describe 计算vip课程购买总价,及老师课酬-只是学生人数统计方式不同
      * @author Joburgess
      * @date 2019/10/23
@@ -222,7 +234,7 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      * @return com.ym.mec.biz.dal.dto.VipGroupCostCountDto
      * @describe vip课程费用计算
      */
-    VipGroupCostCountDto vipGroupCostCount(VipGroupCostCountParamsDto vipGroupCostCountParamsDto);
+//    VipGroupCostCountDto vipGroupCostCount(VipGroupCostCountParamsDto vipGroupCostCountParamsDto);
 
     /**
      * @describe 更新vip课班级人数及状态

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityApplyStudentTypeServiceImpl.java

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.service.ActivityApplyStudentTypeService;
+import com.ym.mec.common.dal.BaseDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.biz.dal.entity.ActivityApplyStudentType;
+import com.ym.mec.biz.dal.dao.ActivityApplyStudentTypeDao;
+
+public class ActivityApplyStudentTypeServiceImpl extends BaseServiceImpl<Integer, ActivityApplyStudentType>  implements ActivityApplyStudentTypeService {
+	
+	@Autowired
+	private ActivityApplyStudentTypeDao activityApplyStudentTypeDao;
+
+	@Override
+	public BaseDAO<Integer, ActivityApplyStudentType> getDAO() {
+		return activityApplyStudentTypeDao;
+	}
+	
+}

+ 62 - 111
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java

@@ -2,11 +2,11 @@ package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.ym.mec.biz.dal.dao.ActivityApplyStudentTypeDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
-import com.ym.mec.biz.dal.dto.ExportVipGroupActivityDto;
-import com.ym.mec.biz.dal.dto.VipGroupActivityAddDto;
-import com.ym.mec.biz.dal.dto.VipGroupSalarySettlementDto;
+import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.ActivityApplyStudentType;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.biz.dal.page.VipGroupActivityQueryInfo;
@@ -26,73 +26,63 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
+import static com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum.TEACHER_DEFAULT;
+
 @Service
 public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGroupActivity>  implements VipGroupActivityService {
 	
 	@Autowired
 	private VipGroupActivityDao vipGroupActivityDao;
 	@Autowired
-	private TeacherDao teacherDao;
+	private ActivityApplyStudentTypeDao activityApplyStudentTypeDao;
 	@Autowired
-	private EntityChangeEventSource entityChangeEventSource;
+	private TeacherDao teacherDao;
 
 	@Override
 	public BaseDAO<Integer, VipGroupActivity> getDAO() {
 		return vipGroupActivityDao;
 	}
 
-	@Override
-	public void addVipGroupActivity(VipGroupActivityAddDto vipGroupActivityAddDto) {
-
-		if(Objects.isNull(vipGroupActivityAddDto.getOrganId())){
-			throw new BizException("请指定部门!");
-		}
-		vipGroupActivityAddDto.setApplyToStudentType(getApplyToStudentType(vipGroupActivityAddDto.getApplyToStudentType()));
-
-		VipGroupSalarySettlementDto vipGroupSalarySettlement = vipGroupActivityAddDto.getVipGroupSalarySettlement();
-		if(Objects.nonNull(vipGroupSalarySettlement.getOnlineSalarySettlement())){
-			switch (vipGroupSalarySettlement.getOnlineSalarySettlement().getSalarySettlementType()){
+	private void checkSettlement(VipGroupSalarySettlementTypeDto settlementTypeDto){
+		if(Objects.nonNull(settlementTypeDto)){
+			switch (settlementTypeDto.getSalarySettlementType()){
 				case TEACHER_DEFAULT:
 					break;
-				case RATIO_DISCOUNT:
-					if(Objects.isNull(vipGroupSalarySettlement.getOnlineSalarySettlement().getSettlementValue())){
-						throw new BizException("请指定线下课单价折算比例");
-					}
-					break;
 				case FIXED_SALARY:
-					if(Objects.isNull(vipGroupSalarySettlement.getOnlineSalarySettlement().getSettlementValue())){
-						throw new BizException("请指定线下课固定课酬");
+					if(Objects.isNull(settlementTypeDto.getSettlementValue())){
+						throw new BizException("请指定固定课酬");
 					}
 					break;
 				default:
-					throw new BizException("未指定课酬结算标准!");
+					throw new BizException("错误的课酬结算标准!");
 			}
 		}
+	}
 
-		if(Objects.nonNull(vipGroupSalarySettlement.getOfflineSalarySettlement())){
-			switch (vipGroupSalarySettlement.getOfflineSalarySettlement().getSalarySettlementType()){
-				case TEACHER_DEFAULT:
-					break;
-				case RATIO_DISCOUNT:
-					if(Objects.isNull(vipGroupSalarySettlement.getOfflineSalarySettlement().getSettlementValue())){
-						throw new BizException("请指定线线上课单价折算比例");
-					}
-					break;
-				case FIXED_SALARY:
-					if(Objects.isNull(vipGroupSalarySettlement.getOfflineSalarySettlement().getSettlementValue())){
-						throw new BizException("请指定线上课固定课酬");
-					}
-					break;
-				default:
-					throw new BizException("未指定课酬结算标准!");
-			}
+	@Override
+	public void addVipGroupActivity(VipGroupActivityAddDto vipGroupActivityAddDto) {
+
+		if(Objects.isNull(vipGroupActivityAddDto.getOrganId())){
+			throw new BizException("请指定部门!");
 		}
+		VipGroupSalarySettlementDto vipGroupSalarySettlement = vipGroupActivityAddDto.getVipGroupSalarySettlement();
+		checkSettlement(vipGroupSalarySettlement.getVipOnlineSalarySettlement());
+		checkSettlement(vipGroupSalarySettlement.getVipOfflineSalarySettlement());
+		checkSettlement(vipGroupSalarySettlement.getGiveVipOnlineSalarySettlement());
+		checkSettlement(vipGroupSalarySettlement.getGiveVipOfflineSalarySettlement());
+		checkSettlement(vipGroupSalarySettlement.getPracticeSalarySettlement());
+		checkSettlement(vipGroupSalarySettlement.getGivePracticeSalarySettlement());
 
 		vipGroupActivityAddDto.setSalarySettlementJson(JSON.toJSONString(vipGroupActivityAddDto.getVipGroupSalarySettlement()));
+		ActivityApplyStudentType applyToStudentType = getApplyToStudentType(vipGroupActivityAddDto.getApplyToStudentType());
+		vipGroupActivityAddDto.setApplyToStudentType(JSONObject.toJSONString(applyToStudentType));
 		super.insert(vipGroupActivityAddDto);
+		applyToStudentType.setActivityId(vipGroupActivityAddDto.getId());
+		activityApplyStudentTypeDao.insert(applyToStudentType);
 	}
 
-	private String getApplyToStudentType(String applyToStudentType){
+	private ActivityApplyStudentType getApplyToStudentType(String applyToStudentType){
+		ActivityApplyStudentType activityApplyStudentType = new ActivityApplyStudentType();
 		if(StringUtils.isNotEmpty(applyToStudentType)){
 			//0:老用户;1:新用户,2会员,3非会员
 			if(applyToStudentType.contains("0") && applyToStudentType.contains("1")){
@@ -104,23 +94,21 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 				applyToStudentType.replace("3","");
 			}
 			if(StringUtils.isNotEmpty(applyToStudentType)){
-				JSONObject applyToStudentTypeJson = new JSONObject();
 				if(applyToStudentType.contains("0")){
-					applyToStudentTypeJson.put("newStudent",0);
+					activityApplyStudentType.setNewStudent(0);
 				}
 				if(applyToStudentType.contains("1")){
-					applyToStudentTypeJson.put("newStudent",1);
+					activityApplyStudentType.setNewStudent(1);
 				}
 				if(applyToStudentType.contains("2")){
-					applyToStudentTypeJson.put("member",1);
+					activityApplyStudentType.setMemberFlag(1);
 				}
 				if(applyToStudentType.contains("3")){
-					applyToStudentTypeJson.put("member",0);
+					activityApplyStudentType.setMemberFlag(0);
 				}
-				applyToStudentType = applyToStudentTypeJson.toJSONString();
 			}
 		}
-		return applyToStudentType;
+		return activityApplyStudentType;
 	}
 
 	@Override
@@ -133,75 +121,38 @@ 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:
-					vipGroupActivityAddDto.getVipGroupSalarySettlement().getOnlineSalarySettlement().setSettlementValue(null);
-					break;
-				case RATIO_DISCOUNT:
-					if(Objects.isNull(vipGroupActivityAddDto.getVipGroupSalarySettlement().getOnlineSalarySettlement().getSettlementValue())){
-						throw new BizException("请指定线下课单价折算比例");
-					}
-					break;
-				case FIXED_SALARY:
-					if(Objects.isNull(vipGroupActivityAddDto.getVipGroupSalarySettlement().getOnlineSalarySettlement().getSettlementValue())){
-						throw new BizException("请指定线下课固定课酬");
-					}
-					break;
-				default:
-					throw new BizException("未指定课酬结算标准!");
-			}
-		}
-
-		if(Objects.nonNull(vipGroupActivityAddDto.getVipGroupSalarySettlement().getOfflineSalarySettlement())){
-			switch (vipGroupActivityAddDto.getVipGroupSalarySettlement().getOfflineSalarySettlement().getSalarySettlementType()){
-				case TEACHER_DEFAULT:
-					vipGroupActivityAddDto.getVipGroupSalarySettlement().getOfflineSalarySettlement().setSettlementValue(null);
-					break;
-				case RATIO_DISCOUNT:
-					if(Objects.isNull(vipGroupActivityAddDto.getVipGroupSalarySettlement().getOfflineSalarySettlement().getSettlementValue())){
-						throw new BizException("请指定线线上课单价折算比例");
-					}
-					break;
-				case FIXED_SALARY:
-					if(Objects.isNull(vipGroupActivityAddDto.getVipGroupSalarySettlement().getOfflineSalarySettlement().getSettlementValue())){
-						throw new BizException("请指定线上课固定课酬");
-					}
-					break;
-				default:
-					throw new BizException("未指定课酬结算标准!");
-			}
-		}
+		VipGroupSalarySettlementDto vipGroupSalarySettlement = vipGroupActivityAddDto.getVipGroupSalarySettlement();
+		checkSettlement(vipGroupSalarySettlement.getVipOnlineSalarySettlement());
+		checkSettlement(vipGroupSalarySettlement.getVipOfflineSalarySettlement());
+		checkSettlement(vipGroupSalarySettlement.getGiveVipOnlineSalarySettlement());
+		checkSettlement(vipGroupSalarySettlement.getGiveVipOfflineSalarySettlement());
+		checkSettlement(vipGroupSalarySettlement.getPracticeSalarySettlement());
+		checkSettlement(vipGroupSalarySettlement.getGivePracticeSalarySettlement());
 
 		vipGroupActivityAddDto.setSalarySettlementJson(JSON.toJSONString(vipGroupActivityAddDto.getVipGroupSalarySettlement()));
-
+		ActivityApplyStudentType applyToStudentType = getApplyToStudentType(vipGroupActivityAddDto.getApplyToStudentType());
+		vipGroupActivityAddDto.setApplyToStudentType(JSONObject.toJSONString(applyToStudentType));
 		super.update(vipGroupActivityAddDto);
-		entityChangeEventSource.entityChange(oldVipGroupActivity, vipGroupActivityAddDto, operatorId);
+		applyToStudentType.setActivityId(vipGroupActivityAddDto.getId());
+		activityApplyStudentTypeDao.updateByActivity(applyToStudentType);
+//		entityChangeEventSource.entityChange(oldVipGroupActivity, vipGroupActivityAddDto, operatorId);
 	}
 
 	@Override
-	public List<VipGroupActivity> findByVipGroupCategory(Long categoryId, String organIds, String courseType) {
-		if(Objects.isNull(categoryId)){
-			throw new BizException("请选择课程形态!");
+	public List<VipGroupActivity> findByVipGroupCategory(ActivityQueryDto activityQueryDto) {
+		Teacher teacher = teacherDao.get(activityQueryDto.getTeacherId());
+		if(Objects.isNull(teacher)){
+			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,courseType);
-
-		return vipGroupActivities;
+		String organId = activityQueryDto.getOrganId();
+		if(StringUtils.isBlank(organId)){
+			organId = teacher.getTeacherOrganId().toString();
+			if (StringUtils.isNotEmpty(teacher.getFlowOrganRange())) {
+				organId += "," + teacher.getFlowOrganRange();
+			}
+			activityQueryDto.setOrganId(organId);
+		}
+		return vipGroupActivityDao.findByCategory(activityQueryDto);
 	}
 
 	@Override

+ 222 - 50
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -88,6 +88,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     @Autowired
     private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
     @Autowired
+    private TeacherDefaultPracticeGroupSalaryDao teacherDefaultPracticeGroupSalaryDao;
+    @Autowired
     private StudentPaymentOrderDao studentPaymentOrderDao;
     @Autowired
 	private StudentApplyRefundsDao studentApplyRefundsDao;
@@ -1540,48 +1542,50 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         return vipGroupDetail;
 	}
 
-	@Override
+	private BigDecimal getSalary(VipGroupSalarySettlementTypeDto salarySettlement,TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary,BigDecimal classNum){
+		if(salarySettlement != null){
+			switch (salarySettlement.getSalarySettlementType()){
+				case TEACHER_DEFAULT:
+					return teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(classNum);
+				case FIXED_SALARY:
+					return salarySettlement.getSettlementValue().multiply(classNum);
+				default:
+					throw new BizException("未指定课酬结算标准!");
+			}
+		}
+		return BigDecimal.ZERO;
+	}
+
+	/*@Override
 	public VipGroupCostCountDto vipGroupCostCount(VipGroupCostCountParamsDto vipGroupCostCountParamsDto) {
         SysUser user = sysUserFeignService.queryUserInfo();
+        //老师默认VIP课酬
         TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(user.getId(), vipGroupCostCountParamsDto.getVipGroupCategoryId());
-        VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.get(vipGroupCostCountParamsDto.getVipGroupDefaultClassesUnitPriceId().intValue());
+
+        //老师默认VIP课酬
+        TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(user.getId(), vipGroupCostCountParamsDto.getC());
+
+        //老师默认网管课课酬
+        TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultPracticeGroupSalaryDao.findByTeacherAndCourseMinutes(user.getId(), vipGroupCostCountParamsDto.getVipGroupCategoryId());
+
+//        VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.get(vipGroupCostCountParamsDto.getVipGroupDefaultClassesUnitPriceId().intValue());
 		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroupCostCountParamsDto.getVipGroupActivityId().intValue());
-        VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
-        BigDecimal offlineClassNum=new BigDecimal(vipGroupCostCountParamsDto.getOfflineClassesNum());
-        BigDecimal onlineClassNum=new BigDecimal(vipGroupCostCountParamsDto.getOnlineClassesNum());
 
+		VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
 
         //教师课酬
-        BigDecimal teacherOnlineSalary,teacherOfflineSalary,teacherSalary;
-        switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
-            case TEACHER_DEFAULT:
-                teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(onlineClassNum);
-                break;
-            case RATIO_DISCOUNT:
-                teacherOnlineSalary=vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice().multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()).multiply(onlineClassNum);
-                break;
-            case FIXED_SALARY:
-                teacherOnlineSalary=vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue().multiply(onlineClassNum);
-                break;
-             default:
-                 throw new BizException("未指定课酬结算标准!");
-        }
-        switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
-            case TEACHER_DEFAULT:
-                teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(offlineClassNum);
-                break;
-            case RATIO_DISCOUNT:
-                teacherOfflineSalary=vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice().multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).multiply(offlineClassNum);
-                break;
-            case FIXED_SALARY:
-                teacherOfflineSalary=vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue().multiply(offlineClassNum);
-                break;
-            default:
-                throw new BizException("未指定课酬结算标准!");
-        }
-        teacherSalary=teacherOnlineSalary.add(teacherOfflineSalary);
+        BigDecimal teacherSalary;
+		BigDecimal vipOnlineSalary = getSalary(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement(),teacherDefaultVipGroupSalary,vipGroupCostCountParamsDto.getVipOnlineClassesNum());
+
+		BigDecimal vipOfflineSalary = getSalary(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement(),teacherDefaultVipGroupSalary,vipGroupCostCountParamsDto.getVipOfflineClassesNum());
+
+		BigDecimal giveVipOnlineSalary = getSalary(vipGroupSalarySettlementDto.getGiveVipOnlineSalarySettlement(),teacherDefaultVipGroupSalary,vipGroupCostCountParamsDto.getGiveVipOnlineClassesNum());
+
+		BigDecimal giveVipOfflineSalary = getSalary(vipGroupSalarySettlementDto.getGiveVipOfflineSalarySettlement(),teacherDefaultVipGroupSalary,vipGroupCostCountParamsDto.getGiveVipOfflineClassesNum());
+
+        teacherSalary=vipOnlineSalary.add(vipOfflineSalary).add(giveVipOnlineSalary).add(giveVipOfflineSalary);
         return new VipGroupCostCountDto(null,teacherSalary);
-    }
+    }*/
 
     @Override
     public <K extends VipGroup> Map<String,BigDecimal> countVipGroupPredictFee(K vipGroup,
@@ -1688,9 +1692,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			vipGroup.setTotalPrice(totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
 
 			//教师课酬线上单课酬计算
-			if(Objects.nonNull(vipGroupSalarySettlementDto.getOnlineSalarySettlement())){
+			if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement())){
 				if(Objects.isNull(teacherOnlineSalary)){
-					switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
+					switch (vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSalarySettlementType()){
 						case TEACHER_DEFAULT:
 							teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
 							results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
@@ -1698,13 +1702,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 						case RATIO_DISCOUNT:
 							results.put("onlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum()))
 									.divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
-									.multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())
+									.multiply(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSettlementValue())
 									.divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
 									.setScale(0,BigDecimal.ROUND_HALF_UP));
 
 							break;
 						case FIXED_SALARY:
-							results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
+							results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
 							break;
 						default:
 							throw new BizException("未指定课酬结算标准!");
@@ -1714,19 +1718,19 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			}
 
 			//教师线下单课酬计算
-			if(Objects.nonNull(vipGroupSalarySettlementDto.getOfflineSalarySettlement())){
+			if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement())){
 				if(Objects.isNull(teacherOfflineSalary)){
-					switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
+					switch (vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSalarySettlementType()){
 						case TEACHER_DEFAULT:
 							teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
 							results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
 							break;
 						case RATIO_DISCOUNT:
-							results.put("offlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum())).divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
+							results.put("offlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum())).divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
 
 							break;
 						case FIXED_SALARY:
-							results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
+							results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
 							break;
 						default:
 							throw new BizException("未指定课酬结算标准!");
@@ -1790,6 +1794,174 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         return results;
     }
 
+    @Override
+    public <K extends VipGroup> Map<String,BigDecimal> countVipGroupPredictFee1(K vipGroup,
+																			   Integer teacherId,
+																			   Long courseId){
+
+		if(Objects.isNull(teacherId)){
+			throw new BizException("请指定教师");
+		}
+
+		if(Objects.isNull(vipGroup.getVipGroupCategoryId())){
+			throw new BizException("请指定课程形式");
+		}
+
+		VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
+		if(Objects.isNull(vipGroupCategory)){
+			throw new BizException("课程形式不存在");
+		}
+
+		TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(teacherId,
+				vipGroup.getVipGroupCategoryId());
+
+		if(Objects.isNull(teacherDefaultVipGroupSalary)){
+			throw new BizException("请设置教师课酬");
+		}
+
+		if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
+			throw new BizException("请设置教师VIP课课酬");
+		}
+
+		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
+
+		Map<String,BigDecimal> results=new HashMap<>(1);
+
+		int normalStudentNum = 0;
+		if(Objects.nonNull(courseId)){
+			normalStudentNum = courseScheduleStudentPaymentDao.countStudentNum(courseId.intValue());
+		}
+		if(normalStudentNum<=0&&Objects.nonNull(vipGroup.getId())){
+			normalStudentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(GroupType.VIP, vipGroup.getId().toString());
+		}
+
+		if(!vipGroupCategory.getMusicTheory()&&Objects.isNull(vipGroupActivity)){
+			throw new BizException("活动设置错误");
+		}
+
+		if(!vipGroupCategory.getMusicTheory()){
+			VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
+
+			if(Objects.isNull(vipGroupSalarySettlementDto)){
+				throw new BizException("课酬结算方案错误");
+			}
+
+			BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
+			BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
+			BigDecimal onlineClassesUnitPrice=vipGroup.getOnlineClassesUnitPrice();
+			if(Objects.isNull(onlineClassesUnitPrice)){
+				throw new BizException("课程单价异常");
+			}
+			BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
+
+			BigDecimal offlineClassesUnitPrice=vipGroup.getOfflineClassesUnitPrice();
+			if(Objects.isNull(offlineClassesUnitPrice)){
+				throw new BizException("课程单价异常");
+			}
+			BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
+			BigDecimal totalClassNum=offlineClassNum.add(onlineClassNum);
+			BigDecimal teacherOnlineSalary=null,teacherOfflineSalary=null;
+
+			//课程购买费用计算
+			BigDecimal totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
+			totalPrice = totalPrice.multiply(vipGroupActivity.getDiscount()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
+
+			results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
+			vipGroup.setTotalPrice(totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
+
+			VipGroupSalarySettlementTypeDto vipOnlineSalarySettlement = vipGroupSalarySettlementDto.getVipOnlineSalarySettlement();
+			//教师课酬线上单课酬计算
+			if(Objects.nonNull(vipOnlineSalarySettlement)){
+				if(Objects.isNull(teacherOnlineSalary)){
+					switch (vipOnlineSalarySettlement.getSalarySettlementType()){
+						case TEACHER_DEFAULT:
+							teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+							results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
+							break;
+						case FIXED_SALARY:
+							results.put("onlineTeacherSalary",vipOnlineSalarySettlement.getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
+							break;
+						default:
+							throw new BizException("错误的课酬结算标准!");
+					}
+
+				}
+			}
+
+			//教师线下单课酬计算
+			VipGroupSalarySettlementTypeDto vipOfflineSalarySettlement = vipGroupSalarySettlementDto.getVipOfflineSalarySettlement();
+			if(Objects.nonNull(vipOfflineSalarySettlement)){
+				if(Objects.isNull(teacherOfflineSalary)){
+					switch (vipOfflineSalarySettlement.getSalarySettlementType()){
+						case TEACHER_DEFAULT:
+							teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+							results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
+							break;
+						case FIXED_SALARY:
+							results.put("offlineTeacherSalary",vipOfflineSalarySettlement.getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
+							break;
+						default:
+							throw new BizException("错误的课酬结算标准!");
+					}
+				}
+			}
+
+			BigDecimal ots = results.get("onlineTeacherSalary");
+			if(Objects.isNull(ots)){
+				ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+			}
+			if(Objects.isNull(ots)){
+				ots = BigDecimal.ZERO;
+			}
+			BigDecimal ofts = results.get("offlineTeacherSalary");
+			if(Objects.isNull(ofts)){
+				ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+			}
+			if(Objects.isNull(ofts)){
+				ofts = BigDecimal.ZERO;
+			}
+			if(Objects.nonNull(vipGroup.getStatus())&&normalStudentNum!=vipGroupCategory.getStudentNum()){
+				ots = ots.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("onlineTeacherSalary", ots);
+			results.put("offlineTeacherSalary", ofts);
+		}
+
+		if(vipGroupCategory.getMusicTheory()){
+			BigDecimal ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+			BigDecimal ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+			if(Objects.nonNull(vipGroup.getStatus())&&vipGroupCategory.getMusicTheory()){
+				ots = ots.multiply(new BigDecimal(normalStudentNum>5?5:normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+				ofts = ofts.multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+			}
+			results.put("totalPrice",vipGroup.getTotalPrice());
+			results.put("onlineTeacherSalary",ots);
+			results.put("offlineTeacherSalary",ofts);
+		}
+
+		if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!CollectionUtils.isEmpty(((VipGroupApplyBaseInfoDto)vipGroup).getVipGroupStudentCoursePrices())){
+			if(vipGroupCategory.getMusicTheory()){
+				vipGroup.setTotalPrice(new BigDecimal(0));
+			}
+			for (VipGroupStudentCoursePrice vscp : ((VipGroupApplyBaseInfoDto)vipGroup).getVipGroupStudentCoursePrices()) {
+				if(!vipGroupCategory.getMusicTheory()){
+					results.put(vscp.getStudentId().toString(), vipGroup.getTotalPrice());
+					continue;
+				}
+				if(Objects.isNull(vscp.getOnlineClassesUnitPrice())||Objects.isNull(vscp.getOfflineClassesUnitPrice())){
+					throw new BizException("请设置课程单价");
+				}
+				vscp.setPaymentPrice(vscp.getOfflineClassesUnitPrice().multiply(new BigDecimal(vipGroup.getOfflineClassesNum())).add(vscp.getOnlineClassesUnitPrice().multiply(new BigDecimal(vipGroup.getOnlineClassesNum()))));
+				vipGroup.setTotalPrice(vipGroup.getTotalPrice().add(vscp.getPaymentPrice()));
+				results.put(vscp.getStudentId().toString(), vscp.getPaymentPrice());
+			}
+		}
+
+        return results;
+    }
+
 	@Override
 	public <K extends VipGroup> Map<String,BigDecimal> countVipGroupCoursePredictFee(K vipGroup,
 																			   Integer teacherId,
@@ -1893,9 +2065,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		}
 
 		//教师课酬线上单课酬计算
-		if(Objects.nonNull(vipGroupSalarySettlementDto.getOnlineSalarySettlement())){
+		if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement())){
 			if(Objects.isNull(teacherOnlineSalary)){
-				switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
+				switch (vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSalarySettlementType()){
 					case TEACHER_DEFAULT:
 						if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
 							teacherOnlineSalary=new BigDecimal(0);
@@ -1907,13 +2079,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 					case RATIO_DISCOUNT:
 						results.put("onlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum()))
 								.divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
-								.multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())
+								.multiply(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSettlementValue())
 								.divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
 								.setScale(0,BigDecimal.ROUND_HALF_UP));
 
 						break;
 					case FIXED_SALARY:
-						results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
+						results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
 						break;
 					default:
 						throw new BizException("未指定课酬结算标准!");
@@ -1923,9 +2095,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		}
 
 		//教师线下单课酬计算
-		if(Objects.nonNull(vipGroupSalarySettlementDto.getOfflineSalarySettlement())){
+		if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement())){
 			if(Objects.isNull(teacherOfflineSalary)){
-				switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
+				switch (vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSalarySettlementType()){
 					case TEACHER_DEFAULT:
 						if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
 							teacherOfflineSalary=new BigDecimal(0);
@@ -1935,11 +2107,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 						results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
 						break;
 					case RATIO_DISCOUNT:
-						results.put("offlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum())).divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
+						results.put("offlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum())).divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
 
 						break;
 					case FIXED_SALARY:
-						results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
+						results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
 						break;
 					default:
 						throw new BizException("未指定课酬结算标准!");

+ 57 - 0
mec-biz/src/main/resources/config/mybatis/ActivityApplyStudentTypeMapper.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.ActivityApplyStudentTypeDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.ActivityApplyStudentType" id="ActivityApplyStudentType">
+		<result column="id_" property="id" />
+		<result column="new_student_" property="newStudent" />
+		<result column="member_flag_" property="memberFlag" />
+		<result column="activity_id_" property="activityId" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="ActivityApplyStudentType" >
+		SELECT * FROM activity_apply_student_type WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="ActivityApplyStudentType">
+		SELECT * FROM activity_apply_student_type ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ActivityApplyStudentType" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO activity_apply_student_type (new_student_,member_flag_,activity_id_)
+		VALUES(#{newStudent},#{memberFlag},#{activityId})
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ActivityApplyStudentType">
+		UPDATE activity_apply_student_type SET member_flag_ = #{memberFlag},new_student_ = #{newStudent} WHERE id_ = #{id}
+	</update>
+	<update id="updateByActivity" parameterType="com.ym.mec.biz.dal.entity.ActivityApplyStudentType">
+		UPDATE activity_apply_student_type SET member_flag_ = #{memberFlag},new_student_ = #{newStudent} WHERE activity_id_ = #{activityId}
+	</update>
+
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM activity_apply_student_type WHERE id_ = #{id} 
+	</delete>
+	<delete id="deleteByActivity">
+		DELETE FROM activity_apply_student_type WHERE activity_id_ = #{activityId}
+	</delete>
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="ActivityApplyStudentType" parameterType="map">
+		SELECT * FROM activity_apply_student_type ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM activity_apply_student_type
+	</select>
+</mapper>

+ 2 - 1
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -76,7 +76,8 @@
           #{studentAttendance.userId},#{studentAttendance.teacherId},
           #{studentAttendance.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),#{studentAttendance.updateTime},
           #{studentAttendance.remark},#{studentAttendance.currentClassTimes},
-          #{studentAttendance.signInTime},#{studentAttendance.signOutTime},#{studentAttendance.currentScheduleId},#{studentAttendance.visitFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+          #{studentAttendance.signInTime},#{studentAttendance.signOutTime},#{studentAttendance.currentScheduleId},
+           #{studentAttendance.visitFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
           #{studentAttendance.normalRemind})
       </foreach>
     </insert>

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

@@ -50,10 +50,11 @@
 		<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="teachMode" column="teach_mode_"/>
+		<result property="giveTeachMode" column="give_teach_mode_"/>
 		<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"/>
+		<result property="status" column="status_"/>
 	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -74,19 +75,22 @@
 										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_)
+		                                activity_type_,give_sign_course_time_,is_pay_to_balance_,teach_mode_,give_teach_mode_,period_,give_period_,status_)
 		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},#{teachModeEnum},#{giveTeachModeEnum},#{periodEnum},#{givePeriodEnum})
+		       #{isPayToBalance},#{teachMode},#{giveTeachMode},#{periodEnum},#{givePeriodEnum},#{status})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.VipGroupActivity">
 		UPDATE vip_group_activity
 		<set>
+			<if test="status_ != null">
+				status_ = #{status},
+			</if>
 			<if test="give_period_ != null">
 				give_period_ = #{givePeriodEnum},
 			</if>
@@ -94,10 +98,10 @@
 				period_ = #{periodEnum},
 			</if>
 			<if test="give_teach_mode_ != null">
-				give_teach_mode_ = #{giveTeachModeEnum},
+				give_teach_mode_ = #{giveTeachMode},
 			</if>
 			<if test="teach_mode_ != null">
-				teach_mode_ = #{teachModeEnum},
+				teach_mode_ = #{teachMode},
 			</if>
 			<if test="is_pay_to_balance_ != null">
 				is_pay_to_balance_ = #{isPayToBalance},
@@ -268,21 +272,21 @@
 		<include refid="queryCondition"/>
 	</select>
     <select id="findByCategory" resultMap="VipGroupActivity">
-		SELECT
-			*
-		FROM
-			vip_group_activity
+		SELECT vga.* FROM
+			vip_group_activity vga
+			LEFT JOIN activity_apply_student_type ast ON vga.id_ = ast.activity_id_
 		WHERE
-			FIND_IN_SET( #{categoryId}, vip_group_category_id_list_ )
-		  	<if test="includeClosed==null">
-				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)
-			</if>
+			FIND_IN_SET(#{activityQueryDto.categoryId}, vga.vip_group_category_id_list_ )
+		<if test="activityQueryDto.includeClosed == null">
+			AND (vga.end_time_ IS NULL OR NOW() BETWEEN vga.start_time_ AND vga.end_time_)
+		</if>
+		AND vga.del_flag_ = 0 AND vga.course_type_ = #{activityQueryDto.courseType} AND INTE_ARRAY(vga.organ_id_,#{activityQueryDto.organIds})
+		<if test="activityQueryDto.newStudentNum != null">
+			AND ast.new_student_ = #{activityQueryDto.newStudentNum}
+		</if>
+		<if test="activityQueryDto.memberNum != null">
+			AND ast.member_flag_ = #{activityQueryDto.memberNum}
+		</if>
 	</select>
     <select id="queryNamesById" resultType="java.util.Map">
 		SELECT vga.id_ `key`,vga.name_ `value` FROM vip_group_activity vga WHERE FIND_IN_SET(vga.id_,#{activityIds}) AND vga.del_flag_=0

+ 36 - 22
mec-teacher/src/main/java/com/ym/mec/teacher/controller/VipGroupActivityController.java

@@ -4,6 +4,7 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.StudentDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dto.ActivityQueryDto;
 import com.ym.mec.biz.dal.dto.VipGroupActivityAddDto;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.SysConfig;
@@ -16,7 +17,6 @@ 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.*;
 
@@ -70,12 +70,13 @@ public class VipGroupActivityController extends BaseController {
 
     @ApiOperation(value = "根据课程类型获取对应课程活动方案")
     @GetMapping("/findByVipGroupCategory")
-    public Object findByVipGroupCategory(Long categoryId, String studentIds, boolean onlySpecialActivity){
+    public Object findByVipGroupCategory(ActivityQueryDto activityQueryDto){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(sysUser == null){
             return failed("用户信息获取失败");
         }
-
+        activityQueryDto.setTeacherId(sysUser.getId());
+        String studentIds = activityQueryDto.getStudentIds();
         if(StringUtils.isBlank(studentIds)){
             return failed("请选择学员");
         }
@@ -84,24 +85,29 @@ public class VipGroupActivityController extends BaseController {
         if(CollectionUtils.isEmpty(students)||students.size()!=userIds.size()){
             return failed("学员信息不存在");
         }
-        long newStudentNum = students.stream().filter(s -> s.getIsNewUser()).count();
+        long newStudentNumCount = students.stream().filter(s -> s.getIsNewUser()).count();
+        long memberCount = students.stream().filter(e -> e.getMemberRankSettingId() != null).count();
 
-        Integer applyToStudentType = -1;
-        if(newStudentNum==0){
-            applyToStudentType = 0;
-        }else if(newStudentNum==userIds.size()){
-            applyToStudentType = 1;
+        if(newStudentNumCount == 0){
+            activityQueryDto.setNewStudentNum(0);
+        }else if(newStudentNumCount == userIds.size()){
+            activityQueryDto.setNewStudentNum(1);
+        }
+        if(memberCount == 0){
+            activityQueryDto.setMemberNum(0);
+        }else if(memberCount == userIds.size()){
+            activityQueryDto.setMemberNum(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, organIds, sysUser.getId(),applyToStudentType, onlySpecialActivity?true:null);
+        activityQueryDto.setOrganId(student.getOrganId().toString());
+        activityQueryDto.setIncludeClosed(activityQueryDto.isOnlySpecialActivity()?true:null);
+        List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.findByVipGroupCategory(activityQueryDto);
         SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.VIP_SPECIAL_ACTIVITY_IDS);
-        if(onlySpecialActivity){
+        if(activityQueryDto.isOnlySpecialActivity()){
             if(Objects.isNull(sysConfig)|| StringUtils.isBlank(sysConfig.getParanValue())){
                 return succeed(Collections.EMPTY_LIST);
             }
@@ -125,11 +131,13 @@ public class VipGroupActivityController extends BaseController {
 
     @ApiOperation(value = "获取六一活动方案")
     @GetMapping("/getChildrenDayActivitys")
-    public Object findByVipGroupCategory(Long categoryId, String studentIds){
+    public Object findByVipGroupCategory1(ActivityQueryDto activityQueryDto){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(sysUser == null){
             return failed("用户信息获取失败");
         }
+        activityQueryDto.setTeacherId(sysUser.getId());
+        String studentIds = activityQueryDto.getStudentIds();
         if(StringUtils.isBlank(studentIds)){
             return failed("请选择学员");
         }
@@ -146,21 +154,27 @@ public class VipGroupActivityController extends BaseController {
         if(CollectionUtils.isEmpty(students)||students.size()!=userIds.size()){
             return failed("学员信息不存在");
         }
-        long newStudentNum = students.stream().filter(s -> s.getIsNewUser()).count();
+        long newStudentNumCount = students.stream().filter(s -> s.getIsNewUser()).count();
+        long memberCount = students.stream().filter(e -> e.getMemberRankSettingId() != null).count();
 
-        Integer applyToStudentType = -1;
-        if(newStudentNum==0){
-            applyToStudentType = 0;
-        }else if(newStudentNum==userIds.size()){
-            applyToStudentType = 1;
+        if(newStudentNumCount == 0){
+            activityQueryDto.setNewStudentNum(0);
+        }else if(newStudentNumCount == userIds.size()){
+            activityQueryDto.setNewStudentNum(1);
+        }
+        if(memberCount == 0){
+            activityQueryDto.setMemberNum(0);
+        }else if(memberCount == userIds.size()){
+            activityQueryDto.setMemberNum(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, organIds, sysUser.getId(), applyToStudentType, null);
+        activityQueryDto.setOrganId(student.getOrganId().toString());
+
+        List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.findByVipGroupCategory(activityQueryDto);
         Iterator<VipGroupActivity> iterator = vipGroupActivities.iterator();
         while (iterator.hasNext()){
             VipGroupActivity vipGroupActivity = iterator.next();

+ 27 - 24
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupActivityController.java

@@ -5,6 +5,7 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dao.StudentDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dto.ActivityQueryDto;
 import com.ym.mec.biz.dal.dto.VipGroupActivityAddDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.Student;
@@ -104,37 +105,39 @@ public class VipGroupActivityController extends BaseController {
     @ApiOperation(value = "根据课程类型获取对应课程活动方案")
     @GetMapping("/findByVipGroupCategory")
     @PreAuthorize("@pcs.hasPermissions('vipGroupActivity/findByVipGroupCategory')")
-    public Object findByVipGroupCategory(Long categoryId,String organId,String courseType){
-        if(StringUtils.isBlank(courseType)){
-            return failed("请选择课程类型");
-        }
-        if(StringUtils.isBlank(organId)){
+    public Object findByVipGroupCategory(ActivityQueryDto activityQueryDto){
+        if(StringUtils.isBlank(activityQueryDto.getOrganId())){
             return failed("请选择分部");
         }
-        if(categoryId == null){
+        if(activityQueryDto.getCategoryId() == null){
             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("学员信息不存在");
-//        }
-//        long newStudentNum = students.stream().filter(s -> s.getIsNewUser()).count();
+        List<Integer> userIds = Arrays.stream(activityQueryDto.getStudentIds().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 newStudentNumCount = students.stream().filter(s -> s.getIsNewUser()).count();
+        long memberCount = students.stream().filter(e -> e.getMemberRankSettingId() != null).count();
 
-//        Integer applyToStudentType = -1;
-//        if(newStudentNum==0){
-//            applyToStudentType = 0;
-//        }else if(newStudentNum==userIds.size()){
-//            applyToStudentType = 1;
-//        }
+        if(newStudentNumCount == 0){
+            activityQueryDto.setNewStudentNum(0);
+        }else if(newStudentNumCount == userIds.size()){
+            activityQueryDto.setNewStudentNum(1);
+        }
+        if(memberCount == 0){
+            activityQueryDto.setMemberNum(0);
+        }else if(memberCount == userIds.size()){
+            activityQueryDto.setMemberNum(1);
+        }
 
-//        SysUser student = teacherDao.getUser(userIds.get(0));
-//        if(Objects.isNull(student)){
-//            return failed("学员信息不存在");
-//        }
-//        String organIds = student.getOrganId().toString();
+        SysUser student = teacherDao.getUser(userIds.get(0));
+        if(Objects.isNull(student)){
+            return failed("学员信息不存在");
+        }
+        activityQueryDto.setOrganId(student.getOrganId().toString());
 
-        List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.findByVipGroupCategory(categoryId, organId, courseType);
+        List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.findByVipGroupCategory(activityQueryDto);
 
         SysConfig doubleElevenIdConfig = sysConfigService.findByParamName(SysConfigService.VIP_SPECIAL_ACTIVITY_IDS);
         if(Objects.nonNull(doubleElevenIdConfig)&&StringUtils.isNotBlank(doubleElevenIdConfig.getParanValue())){

+ 20 - 16
mec-web/src/main/java/com/ym/mec/web/controller/education/EduVipGroupActivityController.java

@@ -1,27 +1,24 @@
 package com.ym.mec.web.controller.education;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dao.StudentDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.dto.VipGroupActivityAddDto;
-import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.dto.ActivityQueryDto;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
-import com.ym.mec.biz.dal.page.VipGroupActivityQueryInfo;
 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 org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -48,7 +45,8 @@ public class EduVipGroupActivityController extends BaseController {
     @ApiOperation(value = "根据课程类型获取对应课程活动方案")
     @GetMapping("/findByVipGroupCategory")
     @PreAuthorize("@pcs.hasPermissions('vipGroupActivity/findByVipGroupCategory')")
-    public Object findByVipGroupCategory(Long categoryId, String studentIds, Integer teacherId){
+    public Object findByVipGroupCategory(ActivityQueryDto activityQueryDto){
+        String studentIds = activityQueryDto.getStudentIds();
         if(StringUtils.isBlank(studentIds)){
             return failed("请选择学员");
         }
@@ -65,21 +63,27 @@ public class EduVipGroupActivityController extends BaseController {
         if(CollectionUtils.isEmpty(students)||students.size()!=userIds.size()){
             return failed("学员信息不存在");
         }
-        long newStudentNum = students.stream().filter(s -> s.getIsNewUser()).count();
+        long newStudentNumCount = students.stream().filter(s -> s.getIsNewUser()).count();
+        long memberCount = students.stream().filter(e -> e.getMemberRankSettingId() != null).count();
 
-        Integer applyToStudentType = -1;
-        if(newStudentNum==0){
-            applyToStudentType = 0;
-        }else if(newStudentNum==userIds.size()){
-            applyToStudentType = 1;
+        if(newStudentNumCount == 0){
+            activityQueryDto.setNewStudentNum(0);
+        }else if(newStudentNumCount == userIds.size()){
+            activityQueryDto.setNewStudentNum(1);
+        }
+        if(memberCount == 0){
+            activityQueryDto.setMemberNum(0);
+        }else if(memberCount == userIds.size()){
+            activityQueryDto.setMemberNum(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, organIds, teacherId, applyToStudentType, null);
+        activityQueryDto.setOrganId(student.getOrganId().toString());
+
+        List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.findByVipGroupCategory(activityQueryDto);
         Iterator<VipGroupActivity> iterator = vipGroupActivities.iterator();
         while (iterator.hasNext()){
             VipGroupActivity vipGroupActivity = iterator.next();