Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 4 years ago
parent
commit
f40bfb1e13

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDetailDao.java

@@ -229,4 +229,11 @@ public interface MusicGroupPaymentCalenderDetailDao extends BaseDAO<Long, MusicG
 	 * @param calenderId
 	 */
 	void updateNoPaymentAndZeroPaymentStatus(Long calenderId);
+
+	/**
+	 * 获取学员乐团欠费金额
+	 * @param musicGroupId
+	 * @return
+	 */
+	List<Map<Integer, BigDecimal>> queryNoPaymentTotalAmount(String musicGroupId);
 }

+ 8 - 0
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.ExportVipGroupActivityDto;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
@@ -24,4 +25,11 @@ public interface VipGroupActivityDao extends BaseDAO<Integer, VipGroupActivity>
 	List<Map<Integer, String>> queryNamesById(String activityIds);
 
 	List<VipGroupActivity> queryByIds(@Param("activityIds") String activityIds);
+
+	/**
+	 * 导出vip活动
+	 * @param params
+	 * @return
+	 */
+	List<ExportVipGroupActivityDto> exportVipGroupActivity(Map<String, Object> params);
 }

+ 153 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExportVipGroupActivityDto.java

@@ -0,0 +1,153 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author zouxuan
+ */
+public class ExportVipGroupActivityDto {
+
+    @ApiModelProperty(value = "适用分部")
+    private String organName;
+
+    @ApiModelProperty(value = "活动编号")
+    private Integer id;
+
+    @ApiModelProperty(value = "活动名称")
+    private String name;
+
+    @ApiModelProperty(value = "活动内容")
+    private String description;
+
+    @ApiModelProperty(value = "适用课程类型")
+    private String vipGroupCategoryIdList;
+
+    @ApiModelProperty(value = "启用状态")
+    private YesOrNoEnum openFlag;
+
+    @ApiModelProperty(value = "活动持续时间")
+    private String time;
+
+    @ApiModelProperty(value = "活动类型")
+    private String type;
+
+    @ApiModelProperty(value = "活动折扣")
+    private String disCount;
+
+    @ApiModelProperty(value = "线上课结算类型")
+    private String onlineSalaryType;
+
+    @ApiModelProperty(value = "线上课结算公式")
+    private String onlineSalarySettlement;
+
+    @ApiModelProperty(value = "线下课结算类型")
+    private String offlineSalaryType;
+
+    @ApiModelProperty(value = "线下课结算公式")
+    private String offlineSalarySettlement;
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getVipGroupCategoryIdList() {
+        return vipGroupCategoryIdList;
+    }
+
+    public void setVipGroupCategoryIdList(String vipGroupCategoryIdList) {
+        this.vipGroupCategoryIdList = vipGroupCategoryIdList;
+    }
+
+    public YesOrNoEnum getOpenFlag() {
+        return openFlag;
+    }
+
+    public void setOpenFlag(YesOrNoEnum openFlag) {
+        this.openFlag = openFlag;
+    }
+
+    public String getTime() {
+        return time;
+    }
+
+    public void setTime(String time) {
+        this.time = time;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getDisCount() {
+        return disCount;
+    }
+
+    public void setDisCount(String disCount) {
+        this.disCount = disCount;
+    }
+
+    public String getOnlineSalaryType() {
+        return onlineSalaryType;
+    }
+
+    public void setOnlineSalaryType(String onlineSalaryType) {
+        this.onlineSalaryType = onlineSalaryType;
+    }
+
+    public String getOnlineSalarySettlement() {
+        return onlineSalarySettlement;
+    }
+
+    public void setOnlineSalarySettlement(String onlineSalarySettlement) {
+        this.onlineSalarySettlement = onlineSalarySettlement;
+    }
+
+    public String getOfflineSalaryType() {
+        return offlineSalaryType;
+    }
+
+    public void setOfflineSalaryType(String offlineSalaryType) {
+        this.offlineSalaryType = offlineSalaryType;
+    }
+
+    public String getOfflineSalarySettlement() {
+        return offlineSalarySettlement;
+    }
+
+    public void setOfflineSalarySettlement(String offlineSalarySettlement) {
+        this.offlineSalarySettlement = offlineSalarySettlement;
+    }
+}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupStudentsDto.java

@@ -67,6 +67,17 @@ public class MusicGroupStudentsDto{
     @ApiModelProperty(value = "剩余可排课时长",required = false)
     private BigDecimal subTotalCourseTime;
 
+    @ApiModelProperty(value = "欠费金额",required = false)
+    private BigDecimal noPaymentAmount;
+
+    public BigDecimal getNoPaymentAmount() {
+        return noPaymentAmount;
+    }
+
+    public void setNoPaymentAmount(BigDecimal noPaymentAmount) {
+        this.noPaymentAmount = noPaymentAmount;
+    }
+
     public BigDecimal getSubTotalCourseTime() {
         return subTotalCourseTime;
     }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupActivityService.java

@@ -1,7 +1,9 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.ExportVipGroupActivityDto;
 import com.ym.mec.biz.dal.dto.VipGroupActivityAddDto;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
+import com.ym.mec.biz.dal.page.VipGroupActivityQueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.List;
@@ -29,4 +31,10 @@ public interface VipGroupActivityService extends BaseService<Integer, VipGroupAc
      */
     List<VipGroupActivity> findByVipGroupCategory(Long categoryId, Integer teacherId);
 
+    /**
+     * 导出vip活动
+     * @param queryInfo
+     * @return
+     */
+    List<ExportVipGroupActivityDto> exportVipGroupActivity(VipGroupActivityQueryInfo queryInfo);
 }

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

@@ -99,7 +99,7 @@ public class StudentManageServiceImpl implements StudentManageService {
     @Autowired
     private SubjectChangeDao subjectChangeDao;
     @Autowired
-    private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
+    private MusicGroupPaymentCalenderDetailDao musicGroupPaymentCalenderDetailDao;
     @Autowired
     private SysConfigService sysConfigService;
     @Autowired
@@ -424,6 +424,8 @@ public class StudentManageServiceImpl implements StudentManageService {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
             dataList = studentManageDao.queryMusicGroupStudent(params);
+            //获取乐团学员欠费金额
+            Map<Integer,BigDecimal> totalAmountMap = MapUtil.convertIntegerMap(musicGroupPaymentCalenderDetailDao.queryNoPaymentTotalAmount(queryInfo.getMusicGroupId()));
             //退团的学生
             List<Integer> quitUserIds = dataList.stream().filter(e -> e.getStudentStatus().equals("QUIT")).map(MusicGroupStudentsDto::getUserId).collect(Collectors.toList());
             if (quitUserIds.size() > 0) {
@@ -435,6 +437,9 @@ public class StudentManageServiceImpl implements StudentManageService {
                     }
                 }
             }
+            dataList.forEach(e->{
+                e.setNoPaymentAmount(totalAmountMap.get(e.getUserId()));
+            });
         }
         if (count == 0) {
             dataList = new ArrayList<>();

+ 12 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java

@@ -3,23 +3,25 @@ package com.ym.mec.biz.service.impl;
 import com.alibaba.fastjson.JSON;
 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.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.VipGroupActivityService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 
 @Service
 public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGroupActivity>  implements VipGroupActivityService {
@@ -161,4 +163,11 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 		}
 		return vipGroupActivityDao.findByCategory(categoryId,organIds);
 	}
+
+	@Override
+	public List<ExportVipGroupActivityDto> exportVipGroupActivity(VipGroupActivityQueryInfo queryInfo) {
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+		return vipGroupActivityDao.exportVipGroupActivity(params);
+	}
 }

+ 19 - 24
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderDetailMapper.xml

@@ -213,6 +213,11 @@
 		LEFT JOIN student_registration sr ON sr.user_id_ = mgpcd.user_id_
 		LEFT JOIN `subject` st ON st.id_ = sr.actual_subject_id_
 		LEFT JOIN music_group_payment_calender mgpc ON mgpc.id_ = mgpcd.music_group_payment_calender_id_
+		<include refid="queryPageSql"/>
+		ORDER BY mgpc.update_time_ DESC
+		<include refid="global.limit" />
+	</select>
+	<sql id="queryPageSql">
 		<where>
 			mgpc.music_group_id_ = sr.music_group_id_
 			<if test="search != null and search != ''">
@@ -224,6 +229,12 @@
 			<if test="paymentStatus != null and paymentStatus != ''">
 				AND mgpcd.payment_status_ = #{paymentStatus}
 			</if>
+			<if test="musicGroupId != null and musicGroupId != ''">
+				AND mgpc.music_group_id_ = #{musicGroupId}
+			</if>
+			<if test="userId != null">
+				AND mgpcd.user_id_ = #{userId}
+			</if>
 			<if test="musicGroupStatus != null and musicGroupStatus != ''">
 				AND sr.music_group_status_ = #{musicGroupStatus}
 			</if>
@@ -234,9 +245,7 @@
 				AND (mgpcd.responsible_user_id_ = #{responsibleRealName} OR tu.real_name_ LIKE CONCAT('%',#{responsibleRealName},'%') OR tu.phone_ LIKE CONCAT('%',#{responsibleRealName},'%'))
 			</if>
 		</where>
-		ORDER BY mgpc.update_time_ DESC
-		<include refid="global.limit" />
-	</select>
+	</sql>
 
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
@@ -246,27 +255,7 @@
 		LEFT JOIN sys_user su ON su.id_ = mgpcd.user_id_
 		left join sys_user tu on tu.id_ = mgpcd.responsible_user_id_
 		LEFT JOIN music_group_payment_calender mgpc ON mgpc.id_ = mgpcd.music_group_payment_calender_id_
-		<where>
-			mgpc.music_group_id_ = sr.music_group_id_
-			<if test="search != null and search != ''">
-				AND (mgpcd.user_id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
-			</if>
-			<if test="id != null">
-				AND mgpcd.music_group_payment_calender_id_ = #{id}
-			</if>
-			<if test="subjectId != null">
-				AND #{subjectId} = sr.actual_subject_id_
-			</if>
-			<if test="paymentStatus != null and paymentStatus != ''">
-				AND mgpcd.payment_status_ = #{paymentStatus}
-			</if>
-			<if test="musicGroupStatus != null and musicGroupStatus != ''">
-				AND sr.music_group_status_ = #{musicGroupStatus}
-			</if>
-			<if test="responsibleRealName != null and responsibleRealName != ''">
-				AND (mgpcd.responsible_user_id_ = #{responsibleRealName} OR tu.real_name_ LIKE CONCAT('%',#{responsibleRealName},'%') OR tu.phone_ LIKE CONCAT('%',#{responsibleRealName},'%'))
-			</if>
-		</where>
+		<include refid="queryPageSql"/>
 	</select>
 	<select id="queryListByIds" resultMap="MusicGroupPaymentCalenderDetail">
 		SELECT mgpcd.*,mgpc.music_group_id_ FROM music_group_payment_calender_detail mgpcd
@@ -395,6 +384,12 @@
 			</foreach>
 		</if>
     </select>
+	<select id="queryNoPaymentTotalAmount" resultType="java.util.Map">
+		SELECT mgpcd.user_id_ 'key',SUM(mgpcd.expect_amount_) 'value' FROM music_group_payment_calender_detail mgpcd
+		LEFT JOIN music_group_payment_calender mgpc ON mgpcd.music_group_payment_calender_id_ = mgpc.id_
+		WHERE mgpcd.payment_status_ = 'NON_PAYMENT' AND mgpc.music_group_id_ = #{musicGroupId} AND mgpc.status_ IN ('OPEN','OVER','PAID')
+		GROUP BY mgpcd.user_id_
+	</select>
 
 	<update id="updateNoPaymentAndZeroPaymentStatus">
 		UPDATE music_group_payment_calender_detail SET payment_status_ = 'PAID_COMPLETED',actual_amount_ = 0,update_time_ = NOW()

+ 50 - 1
mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml

@@ -125,7 +125,7 @@
 			</if>
 			</set> WHERE id_ = #{id}
 	</update>
-	
+
 	<!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
 		UPDATE vip_group_activity SET del_flag_=1 WHERE id_ = #{id}
@@ -185,4 +185,53 @@
     <select id="queryByIds" resultMap="VipGroupActivity">
 		SELECT * FROM vip_group_activity vga WHERE FIND_IN_SET(vga.id_,#{activityIds})
 	</select>
+	<resultMap type="com.ym.mec.biz.dal.dto.ExportVipGroupActivityDto" id="exportVipGroupActivityMap">
+		<result column="organ_name_" property="organName" />
+		<result column="id_" property="id" />
+		<result column="name_" property="name" />
+		<result column="description_" property="description" />
+		<result column="vip_group_category_id_list_" property="vipGroupCategoryIdList" />
+		<result column="open_flag_" property="openFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+		<result column="time_" property="time" />
+		<result column="type_" property="type" />
+		<result column="dis_count_" property="disCount" />
+		<result column="online_salary_type_" property="onlineSalaryType" />
+		<result column="online_salary_settlement_" property="onlineSalarySettlement" />
+		<result column="offline_salary_type_" property="offlineSalaryType" />
+		<result column="offline_salary_settlement_" property="offlineSalarySettlement" />
+
+	</resultMap>
+	<select id="exportVipGroupActivity" resultMap="exportVipGroupActivityMap">
+		SELECT GROUP_CONCAT(distinct o.`name_`) organ_name_,vga.id_ , vga.`name_`,vga.`description_`,GROUP_CONCAT(distinct vgc.`name_`) vip_group_category_id_list_ ,
+		((NOW() &lt; vga.end_time_ AND NOW() > vga.start_time_) OR vga.end_time_ IS NULL) open_flag_,concat(vga.`start_time_`,' - ',vga.`end_time_` ) time_,
+		case when vga.`type_` = 'BASE_ACTIVITY' then '基础活动' when vga.`type_` = 'DISCOUNT' then '折扣' else '赠送课时' end type_ ,
+		case when vga.`type_` = 'DISCOUNT' then concat(vga.`attribute1_`,'%')  end dis_count_ ,
+		case when JSON_EXTRACT(vga.`salary_settlement_json_`,'$.onlineSalarySettlement.salarySettlementType') = 'RATIO_DISCOUNT' then '课程单价比例折扣'
+		when JSON_EXTRACT(vga.`salary_settlement_json_`,'$.onlineSalarySettlement.salarySettlementType') = 'FIXED_SALARY' then '固定课酬'
+		else '老师默认课酬' end online_salary_type_,
+		JSON_EXTRACT(vga.`salary_settlement_json_`,'$.onlineSalarySettlement.settlementValue') online_salary_settlement_,
+		case when JSON_EXTRACT(vga.`salary_settlement_json_`,'$.offlineSalarySettlement.salarySettlementType') = 'RATIO_DISCOUNT' then '课程单价比例折扣'
+		when JSON_EXTRACT(vga.`salary_settlement_json_`,'$.offlineSalarySettlement.salarySettlementType') = 'FIXED_SALARY' then '固定课酬'
+		else '老师默认课酬' end  offline_salary_type_,
+		JSON_EXTRACT(vga.`salary_settlement_json_`,'$.offlineSalarySettlement.settlementValue') offline_salary_settlement_
+		FROM `vip_group_activity` vga
+		LEFT JOIN `organization` o on find_in_set(o.`id_`,vga.`organ_id_` )
+		LEFT JOIN `vip_group_category` vgc on find_in_set(vgc.`id_`,vga.`vip_group_category_id_list_` )
+		<where>
+			vga.del_flag_=0
+			<if test="organId != null">
+				AND INTE_ARRAY(vga.organ_id_,#{organId})
+			</if>
+			<if test="enable != null and enable == true">
+				AND ((NOW() &lt; vga.end_time_ AND NOW() > vga.start_time_) OR end_time_ IS NULL)
+			</if>
+			<if test="enable != null and enable == false">
+				AND (NOW() >= vga.end_time_ OR NOW() &lt;= vga.start_time_)
+			</if>
+			<if test="search != null and search != ''">
+				AND (vga.id_ = #{search} OR vga.name_ LIKE CONCAT('%', #{search}, '%'))
+			</if>
+		</where>
+		GROUP BY vga.`id_`
+	</select>
 </mapper>

+ 53 - 50
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -3,6 +3,8 @@ package com.ym.mec.web.controller;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.service.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -47,55 +49,6 @@ import com.ym.mec.biz.dal.enums.PaymentChannelEnum;
 import com.ym.mec.biz.dal.enums.SporadicChargeTypeEnum;
 import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
-import com.ym.mec.biz.dal.page.CooperationOrganQueryInfo;
-import com.ym.mec.biz.dal.page.CourseReviewQueryInfo;
-import com.ym.mec.biz.dal.page.CourseSalaryQueryInfo4Web;
-import com.ym.mec.biz.dal.page.CourseScheduleTeacherSalaryQueryInfo;
-import com.ym.mec.biz.dal.page.DegreeQueryInfo;
-import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
-import com.ym.mec.biz.dal.page.ExportStudentAttendanceQueryInfo;
-import com.ym.mec.biz.dal.page.ExportTeacherSalaryQueryInfo;
-import com.ym.mec.biz.dal.page.ExtraExercilseReplyQueryInfo;
-import com.ym.mec.biz.dal.page.MusicCalenderDetailQueryInfo;
-import com.ym.mec.biz.dal.page.MusicGroupPaymentCalenderQueryInfo;
-import com.ym.mec.biz.dal.page.MusicGroupStudentQueryInfo;
-import com.ym.mec.biz.dal.page.PracticeGroupQueryInfo;
-import com.ym.mec.biz.dal.page.SellOrderQueryInfo;
-import com.ym.mec.biz.dal.page.SporadicChargeInfoQueryInfo;
-import com.ym.mec.biz.dal.page.StudentBuyPracticeQueryInfo;
-import com.ym.mec.biz.dal.page.StudentExercisesSituationQueryInfo;
-import com.ym.mec.biz.dal.page.StudentManageQueryInfo;
-import com.ym.mec.biz.dal.page.StudentOperatingQueryInfo;
-import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
-import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
-import com.ym.mec.biz.dal.page.TeacherCloseQueryInfo;
-import com.ym.mec.biz.dal.page.TeacherCourseRewardQueryInfo;
-import com.ym.mec.biz.dal.page.TeacherSalaryModifyQueryInfo;
-import com.ym.mec.biz.dal.page.TenantPaymentOrderQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
-import com.ym.mec.biz.service.CooperationOrganService;
-import com.ym.mec.biz.service.CourseReviewService;
-import com.ym.mec.biz.service.CourseScheduleService;
-import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
-import com.ym.mec.biz.service.DegreeRegistrationService;
-import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
-import com.ym.mec.biz.service.MusicGroupPaymentCalenderDetailService;
-import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
-import com.ym.mec.biz.service.PracticeGroupService;
-import com.ym.mec.biz.service.SellOrderService;
-import com.ym.mec.biz.service.SporadicChargeInfoService;
-import com.ym.mec.biz.service.StudentAttendanceService;
-import com.ym.mec.biz.service.StudentExtracurricularExercisesSituationService;
-import com.ym.mec.biz.service.StudentManageService;
-import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
-import com.ym.mec.biz.service.StudentRegistrationService;
-import com.ym.mec.biz.service.TeacherAttendanceService;
-import com.ym.mec.biz.service.TeacherCourseRewardService;
-import com.ym.mec.biz.service.TeacherSalaryComplaintsService;
-import com.ym.mec.biz.service.TeacherService;
-import com.ym.mec.biz.service.TenantPaymentOrderService;
-import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
@@ -181,7 +134,57 @@ public class ExportController extends BaseController {
     @Autowired
     private SellOrderDao sellOrderDao;
     @Autowired
-    private SysConfigDao sysConfigDao;
+    private VipGroupActivityService vipGroupActivityService;
+
+    @ApiOperation(value = "VIP活动导出")
+    @PostMapping("export/vipGroupActivity")
+    @PreAuthorize("@pcs.hasPermissions('export/vipGroupActivity')")
+    public void exportVipGroupActivity(HttpServletResponse response, VipGroupActivityQueryInfo queryInfo) throws IOException {
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("用户信息获取失败");
+        }
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+                queryInfo.setOrganId(employee.getOrganIdList());
+            } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
+                throw new BizException("用户所在分部异常");
+            } else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
+                    throw new BizException("非法请求");
+                }
+            }
+        }
+        List<ExportVipGroupActivityDto> rows = vipGroupActivityService.exportVipGroupActivity(queryInfo);
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部名称", "活动编号", "活动名称", "活动类型", "适用课程类型",
+                    "启用状态", "活动持续时间", "活动类型", "活动折扣", "线上课结算类型", "线上课结算公式",
+                    "线下课结算类型", "线下课结算公式"}, new String[]{
+                    "organName", "id", "name", "description", "vipGroupCategoryIdList",
+                    "openFlag.msg", "time", "type", "disCount", "onlineSalaryType", "onlineSalarySettlement", "offlineSalaryType", "offlineSalarySettlement"}, rows);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=vipGroupActivity-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 
     @ApiOperation(value = "学员考勤记录导出")
     @PostMapping("export/exportStudentAttendances")