فهرست منبع

Merge remote-tracking branch 'origin/master'

周箭河 5 سال پیش
والد
کامیت
fcbb721a40

+ 1 - 16
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.common.dal.BaseDAO;
 
 import com.ym.mec.common.entity.ImGroupModel;
@@ -80,22 +81,6 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     List<TeacherMusicClassInfoDto> queryGroupCourses(Integer userId);
 
     /**
-     * 获取老师VIP课程信息列表
-     *
-     * @param params
-     * @return
-     */
-    List<TeacherVipClassInfoDto> getTeacherVipClass(Map<String, Object> params);
-
-    /**
-     * count老师VIP课程信息列表
-     *
-     * @param params
-     * @return
-     */
-    int countTeacherVipClass(Map<String, Object> params);
-
-    /**
      * 获取乐团所有班级列表
      *
      * @param musicGroupId

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

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.common.dal.BaseDAO;
 
 import java.util.List;
+import java.util.Map;
 
 public interface VipGroupActivityDao extends BaseDAO<Integer, VipGroupActivity> {
 
@@ -14,4 +15,10 @@ public interface VipGroupActivityDao extends BaseDAO<Integer, VipGroupActivity>
      */
     List<VipGroupActivity> findByCategory(Long categoryId);
 
+    /**
+     * 根据活动方案编号列表获取名称
+     * @param activityIds
+     * @return
+     */
+    List<Map<Integer, String>> queryNamesById(String activityIds);
 }

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java

@@ -175,4 +175,18 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
      * @describe 统计老师开启的vip课数
      */
     int countTeacherVipGroups(Long teacherId);
+
+	/**
+	 * 根据教师编号获取老师vip课数量
+	 * @param teacherId
+	 * @return
+	 */
+	int countTeacherVipClass(Integer teacherId);
+
+	/**
+	 * 根据教师编号获取老师vip课列表
+	 * @param params
+	 * @return
+	 */
+	List<TeacherVipClassInfoDto> getTeacherVipClass(Map<String, Object> params);
 }

+ 82 - 16
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherVipClassInfoDto.java

@@ -1,19 +1,25 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.enums.AuditStatusEnum;
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
 import java.util.Date;
 
-import com.ym.mec.biz.dal.enums.AuditStatusEnum;
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
-
 /**
  * 老师Vip课程信息
  */
 public class TeacherVipClassInfoDto {
     @ApiModelProperty(value = "Vip课编号", required = false)
-    private Integer vipClassId;
+    private Long vipClassId;
+
+    @ApiModelProperty(value = "班级编号", required = false)
+    private Integer classGroupId;
+
+    @ApiModelProperty(value = "教学模式(线上线下)", required = false)
+    private TeachModeEnum teachMode;
 
     @ApiModelProperty(value = "Vip课名称",required = false)
     private String vipClassName;
@@ -27,12 +33,21 @@ public class TeacherVipClassInfoDto {
     @ApiModelProperty(value = "班级人数",required = false)
     private Integer studentNum;
 
-    @ApiModelProperty(value = "课程单价",required = false)
-    private BigDecimal vipClassFee;
+    @ApiModelProperty(value = "线上课单价",required = false)
+    private BigDecimal onlineClassesUnitPrice;
+
+    @ApiModelProperty(value = "线下课单价",required = false)
+    private BigDecimal offlineClassesUnitPrice;
 
     @ApiModelProperty(value = "开课时间",required = false)
     private Date paymentExpireDate;
 
+    @ApiModelProperty(value = "活动方案",required = false)
+    private String activityName;
+
+    @ApiModelProperty(value = "活动编号",required = false)
+    private Integer activityId;
+
     @ApiModelProperty(value = "截止时间",required = false)
     private Date coursesExpireDate;
 
@@ -45,6 +60,65 @@ public class TeacherVipClassInfoDto {
     @ApiModelProperty(value = "当前课次",required = false)
     private Integer currentClassTimes;
 
+    @ApiModelProperty(value = "月度平均消耗",required = false)
+    private float monthAvg;
+
+    public Integer getActivityId() {
+        return activityId;
+    }
+
+    public void setActivityId(Integer activityId) {
+        this.activityId = activityId;
+    }
+
+    public BigDecimal getOnlineClassesUnitPrice() {
+        return onlineClassesUnitPrice;
+    }
+
+    public void setOnlineClassesUnitPrice(BigDecimal onlineClassesUnitPrice) {
+        this.onlineClassesUnitPrice = onlineClassesUnitPrice;
+    }
+
+    public BigDecimal getOfflineClassesUnitPrice() {
+        return offlineClassesUnitPrice;
+    }
+
+    public void setOfflineClassesUnitPrice(BigDecimal offlineClassesUnitPrice) {
+        this.offlineClassesUnitPrice = offlineClassesUnitPrice;
+    }
+
+    public TeachModeEnum getTeachMode() {
+        return teachMode;
+    }
+
+    public void setTeachMode(TeachModeEnum teachMode) {
+        this.teachMode = teachMode;
+    }
+
+    public Integer getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Integer classGroupId) {
+        this.classGroupId = classGroupId;
+    }
+
+    public String getActivityName() {
+        return activityName;
+    }
+
+    public void setActivityName(String activityName) {
+        this.activityName = activityName;
+    }
+
+    public float getMonthAvg() {
+        return monthAvg;
+    }
+
+    public void setMonthAvg(float monthAvg) {
+        this.monthAvg = monthAvg;
+    }
+
     public Integer getCurrentClassTimes() {
         return currentClassTimes;
     }
@@ -61,11 +135,11 @@ public class TeacherVipClassInfoDto {
         this.totalClassTimes = totalClassTimes;
     }
 
-    public Integer getVipClassId() {
+    public Long getVipClassId() {
         return vipClassId;
     }
 
-    public void setVipClassId(Integer vipClassId) {
+    public void setVipClassId(Long vipClassId) {
         this.vipClassId = vipClassId;
     }
 
@@ -101,14 +175,6 @@ public class TeacherVipClassInfoDto {
         this.studentNum = studentNum;
     }
 
-    public BigDecimal getVipClassFee() {
-        return vipClassFee;
-    }
-
-    public void setVipClassFee(BigDecimal vipClassFee) {
-        this.vipClassFee = vipClassFee;
-    }
-
     public Date getPaymentExpireDate() {
         return paymentExpireDate;
     }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -19,7 +19,7 @@ public class CourseSchedule {
 
 	public enum CourseScheduleType implements BaseEnum<String, CourseScheduleType> {
 
-		SINGLE("SINGLE", "单技课"), MIX("MIX", "合奏课"), HIGH("HIGH", "小班课"), VIP("VIP", "vip课"), DEMO("demo", "试听课"), COMPREHENSIVE("comprehensive", "综合课"), PRACTICE(
+		SINGLE("SINGLE", "单技课"), MIX("MIX", "合奏课"), HIGH("HIGH", "小班课"), VIP("VIP", "vip课"), DEMO("DEMO", "试听课"), COMPREHENSIVE("COMPREHENSIVE", "综合课"), PRACTICE(
 				"PRACTICE", "练习课"), ENLIGHTENMENT("ENLIGHTENMENT", "启蒙课"), TRAINING("TRAINING", "集训课");
 
 		private String code;

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
 import com.ym.mec.biz.dal.page.StudentPayLogQueryInfo;
 import com.ym.mec.biz.dal.page.VipClassQueryInfo;

+ 22 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -17,6 +17,7 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -36,6 +37,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private ClassGroupDao classGroupDao;
     @Autowired
+    private VipGroupDao vipGroupDao;
+    @Autowired
+    private VipGroupActivityDao vipGroupActivityDao;
+    @Autowired
     private TeacherAttendanceDao teacherAttendanceDao;
     @Autowired
     private MusicGroupDao musicGroupDao;
@@ -252,11 +257,26 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
         List<TeacherVipClassInfoDto> dataList = null;
-        int count = classGroupDao.countTeacherVipClass(params);
+        int count = vipGroupDao.countTeacherVipClass(queryInfo.getTeacherId());
         if (count > 0) {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
-            dataList = classGroupDao.getTeacherVipClass(params);
+            dataList = vipGroupDao.getTeacherVipClass(params);
+            Set<Integer> activityIds = dataList.stream().map(e -> e.getActivityId()).collect(Collectors.toSet());
+            List<Map<Integer,String>> names = vipGroupActivityDao.queryNamesById(StringUtils.join(activityIds,","));
+            Map<Integer,String> nameMap = MapUtil.convertMybatisMap(names);
+            //计算月度平均消耗值(已上课时 / 消耗月份)
+            Date date = new Date();
+            dataList.forEach(e->{
+                e.setActivityName(nameMap.get(e.getActivityId()));
+                int days = DateUtil.daysBetween(e.getPaymentExpireDate(), date);
+                if(days <= 0){
+                    e.setMonthAvg(0f);
+                }else {
+                    e.setMonthAvg(e.getCurrentClassTimes()/(days/30));
+                }
+            });
+
         }
         if (count == 0) {
             dataList = new ArrayList<>();

+ 0 - 32
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -206,38 +206,6 @@
     </select>
 
 
-    <resultMap type="com.ym.mec.biz.dal.dto.TeacherVipClassInfoDto" id="getTeacherVipClassMap">
-        <result column="price_" property="vipClassFee"/>
-        <result column="vip_group_id_" property="vipClassId"/>
-        <result column="student_num_" property="studentNum"/>
-        <result column="courses_expire_date_" property="coursesExpireDate"/>
-        <result column="payment_expire_date_" property="paymentExpireDate"/>
-        <result column="create_time_" property="createDate"/>
-        <result column="current_class_times_" property="currentClassTimes"/>
-        <result column="total_class_times_" property="totalClassTimes"/>
-        <result column="vip_group_name_" property="vipClassName"/>
-        <result column="audit_status_" property="auditStatus"
-                typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-        <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-    </resultMap>
-    <select id="getTeacherVipClass" resultMap="getTeacherVipClassMap">
-        SELECT vg.id_ vip_group_id_,vg.name_ vip_group_name_,vg.audit_status_,cs.status_,
-        cg.student_num_,vg.price_,vg.payment_expire_date_,vg.courses_expire_date_,vg.create_time_,
-        cs.current_class_times_,cg.total_class_times_
-        FROM vip_group vg
-        LEFT JOIN sys_user su ON vg.user_id_ = su.id_
-        LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_ = vgcgm.vip_group_id_
-        LEFT JOIN class_group cg ON vgcgm.class_group_id_ = cg.id_
-        LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
-        WHERE vg.user_id_ = #{teacherId}
-        <include refid="global.limit"/>
-    </select>
-    <select id="countTeacherVipClass" resultType="java.lang.Integer">
-        SELECT COUNT(vg.id_) FROM vip_group vg
-        WHERE vg.user_id_ = #{teacherId}
-    </select>
-
-
     <resultMap type="com.ym.mec.biz.dal.dto.ClassGroupTeachersDto" id="ClassGroupTeachers">
         <result column="id_" property="id"/>
         <result column="music_group_id_" property="musicGroupId"/>

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

@@ -73,7 +73,7 @@
 
     <!-- 根据主键删除一条记录 -->
     <update id="delete">
-		UPDATE cooperation_organ SET det_flag_ = 1 WHERE id_ =#{id}
+		UPDATE cooperation_organ SET del_flag_ = 1 WHERE id_ =#{id}
 	</update>
 
     <!-- 分页查询 -->

+ 0 - 6
mec-biz/src/main/resources/config/mybatis/SysConfigMapper.xml

@@ -50,12 +50,6 @@
 			<if test="description != null">
 				description_ = #{description},
 			</if>
-			<if test="id != null">
-				id_ = #{id},
-			</if>
-			<if test="createOn != null">
-				create_on_ = #{createOn},
-			</if>
 			<if test="paramName != null">
 				param_name_ = #{paramName},
 			</if>

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

@@ -146,4 +146,7 @@
 		WHERE
 			FIND_IN_SET( #{categoryId}, vip_group_category_id_list_ )
 	</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})
+	</select>
 </mapper>

+ 41 - 5
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -547,10 +547,46 @@
         GROUP BY cssp.user_id_
     </select>
     <select id="countTeacherVipGroups" resultType="int">
-        SELECT
-            COUNT( * )
-        FROM
-            vip_group
-        WHERE user_id_=#{teacherId} AND status_!=3
+        SELECT COUNT(vg.id_) FROM vip_group vg
+        LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_ = vgcgm.vip_group_id_
+        LEFT JOIN course_schedule cs ON cs.class_group_id_ = vgcgm.class_group_id_
+        WHERE cs.actual_teacher_id_ = #{teacherId} AND cs.type_ = 'VIP' AND status_!=3 GROUP BY vg.id_
+    </select>
+
+    <select id="countTeacherVipClass" resultType="java.lang.Integer">
+        SELECT COUNT(DISTINCT vg.id_) FROM vip_group vg
+        LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_ = vgcgm.vip_group_id_
+        LEFT JOIN class_group cg ON cg.id_ = vgcgm.class_group_id_
+        LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_
+        WHERE cs.actual_teacher_id_ = 6 AND cs.type_ = 'VIP' AND cg.del_flag_ = 0
+    </select>
+
+    <resultMap type="com.ym.mec.biz.dal.dto.TeacherVipClassInfoDto" id="getTeacherVipClassMap">
+        <result column="vip_group_id_" property="vipClassId"/>
+        <result column="student_num_" property="studentNum"/>
+        <result column="online_classes_unit_price_" property="onlineClassesUnitPrice"/>
+        <result column="offline_classes_unit_price_" property="offlineClassesUnitPrice"/>
+        <result column="class_group_id_" property="classGroupId"/>
+        <result column="courses_expire_date_" property="coursesExpireDate"/>
+        <result column="payment_expire_date_" property="paymentExpireDate"/>
+        <result column="create_time_" property="createDate"/>
+        <result column="current_class_times_" property="currentClassTimes"/>
+        <result column="total_class_times_" property="totalClassTimes"/>
+        <result column="vip_group_name_" property="vipClassName"/>
+        <result column="audit_status_" property="auditStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="teach_mode_" property="teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="vip_group_activity_id_" property="activityId"/>
+    </resultMap>
+    <select id="getTeacherVipClass" resultMap="getTeacherVipClassMap">
+        SELECT vg.id_ vip_group_id_,vg.name_ vip_group_name_,vg.status_,vg.audit_status_,vg.create_time_,
+        vg.payment_expire_date_,vg.courses_expire_date_,vg.online_classes_unit_price_,vg.offline_classes_unit_price_,
+        cg.total_class_times_,cg.current_class_times_,cg.id_ class_group_id_,cg.student_num_,vg.vip_group_activity_id_
+        FROM vip_group vg
+        LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_ = vgcgm.vip_group_id_
+        LEFT JOIN class_group cg ON cg.id_ = vgcgm.class_group_id_
+        LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_
+        WHERE cs.actual_teacher_id_ = #{teacherId} AND cs.type_ = 'VIP' AND cg.del_flag_ = 0 GROUP BY vg.id_,cg.id_
+        <include refid="global.limit"/>
     </select>
 </mapper>