Jelajahi Sumber

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

yonge 5 tahun lalu
induk
melakukan
6cca7e287d
30 mengubah file dengan 434 tambahan dan 125 penghapusan
  1. 1 16
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  2. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/DemoGroupDao.java
  3. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysAccountDao.java
  4. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupActivityDao.java
  5. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java
  6. 82 16
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherVipClassInfoDto.java
  7. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java
  8. 11 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/DemoGroup.java
  9. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentOrder.java
  10. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherManageDemoGroupQueryInfo.java
  11. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  12. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/DemoGroupService.java
  13. 22 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  14. 6 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java
  15. 9 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java
  16. 0 32
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  17. 1 1
      mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml
  18. 4 18
      mec-biz/src/main/resources/config/mybatis/DemoGroupMapper.xml
  19. 5 1
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  20. 8 0
      mec-biz/src/main/resources/config/mybatis/SysAccountMapper.xml
  21. 0 6
      mec-biz/src/main/resources/config/mybatis/SysConfigMapper.xml
  22. 1 1
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  23. 3 0
      mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml
  24. 41 5
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  25. 1 1
      mec-student/src/main/java/com/ym/mec/student/config/ResourceServerConfig.java
  26. 2 2
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  27. 51 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  28. 9 2
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/DemoGroupController.java
  29. 126 0
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/NotifyMsg.java
  30. 10 0
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

+ 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

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

@@ -79,7 +79,7 @@ public interface DemoGroupDao extends BaseDAO<Long, DemoGroup> {
      * @Date: 2019/9/26
      * 根据老师编号获取试听课
      */
-    DemoGroup findDemoGroupByTeacherId(Long teacherId);
+    DemoGroup findDemoGroupByTeacherId(Integer teacherId);
 
     /**
      * @Author: Joburgess

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysAccountDao.java

@@ -5,6 +5,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 public interface SysAccountDao extends BaseDAO<Integer, SysAccount> {
 
@@ -17,4 +18,6 @@ public interface SysAccountDao extends BaseDAO<Integer, SysAccount> {
      * @return
      */
     SysAccount getPerAccount(@Param("amount") BigDecimal amount);
+
+    int batchInsert(@Param("sysAccountList") List<SysAccount> sysAccountList);
 }

+ 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;

+ 11 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/DemoGroup.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.math.BigDecimal;
@@ -10,15 +11,17 @@ import java.math.BigDecimal;
 public class DemoGroup {
 
 	/**  */
+	@ApiModelProperty(value = "试听课编号",required = false)
 	private Long id;
 	
 	/**  */
+	@ApiModelProperty(value = "试听课名称",required = false)
 	private String name;
 	
-	/** 单节课时 */
+	@ApiModelProperty(value = "单节课时",required = false)
 	private Integer singleClassMinutes;
 	
-	/** 所属分部列表 */
+	@ApiModelProperty(value = "老师和学生共有的分部列表集合",required = false)
 	private String organIdList;
 	
 	/**  */
@@ -27,18 +30,20 @@ public class DemoGroup {
 	/**  */
 	private java.util.Date updateTime;
 	
-	/** 老师编号 */
+	@ApiModelProperty(value = "老师编号",required = false)
 	private Integer userId;
 
+	@ApiModelProperty(value = "试听课单价",required = false)
 	private BigDecimal price;
 
-	private Long subjectId;
+	@ApiModelProperty(value = "科目编号",required = false)
+	private Integer subjectId;
 
-	public Long getSubjectId() {
+	public Integer getSubjectId() {
 		return subjectId;
 	}
 
-	public void setSubjectId(Long subjectId) {
+	public void setSubjectId(Integer subjectId) {
 		this.subjectId = subjectId;
 	}
 

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentOrder.java

@@ -74,6 +74,8 @@ public class StudentPaymentOrder {
 	/**  */
 	@ApiModelProperty(value = "课程组编号",required = true)
 	private Integer classGroupId;
+
+	private Integer version;
 	
 	public void setId(Long id){
 		this.id = id;
@@ -203,6 +205,14 @@ public class StudentPaymentOrder {
 		this.status = status;
 	}
 
+	public Integer getVersion() {
+		return version;
+	}
+
+	public void setVersion(Integer version) {
+		this.version = version;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherManageDemoGroupQueryInfo.java

@@ -10,13 +10,13 @@ import io.swagger.annotations.ApiModelProperty;
 public class TeacherManageDemoGroupQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "教师编号")
-    private Long teacherId;
+    private Integer teacherId;
 
-    public Long getTeacherId() {
+    public Integer getTeacherId() {
         return teacherId;
     }
 
-    public void setTeacherId(Long teacherId) {
+    public void setTeacherId(Integer teacherId) {
         this.teacherId = teacherId;
     }
 }

+ 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;

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

@@ -41,7 +41,7 @@ public interface DemoGroupService extends BaseService<Long, DemoGroup> {
      * @Date: 2019/9/26
      * 根据教师编号获取试听课信息
      */
-    DemoGroup getDemoGroupByTeacherId();
+    DemoGroup getDemoGroupByTeacherId() throws Exception;
 
     /**
      * @Author: Joburgess

+ 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<>();

+ 6 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java

@@ -58,7 +58,7 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 	public void demoGroupApply(DemoGroupApplyDto demoGroupApplyDto) {
 		SysUser user = sysUserFeignService.queryUserInfo();
 
-		if(null!=demoGroupDao.findDemoGroupByTeacherId(user.getId().longValue())){
+		if(null!=demoGroupDao.findDemoGroupByTeacherId(user.getId())){
 			throw new BizException("请勿多次创建试听课!");
 		}
 
@@ -70,9 +70,12 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 	}
 
 	@Override
-	public DemoGroup getDemoGroupByTeacherId() {
+	public DemoGroup getDemoGroupByTeacherId() throws Exception {
 		SysUser user = sysUserFeignService.queryUserInfo();
-		return demoGroupDao.findDemoGroupByTeacherId(user.getId().longValue());
+		if(user == null){
+			throw new Exception("获取用户信息失败");
+		}
+		return demoGroupDao.findDemoGroupByTeacherId(user.getId());
 	}
 
 	@Override

+ 9 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -48,13 +48,15 @@ public class PayServiceImpl implements PayService {
         HashMap<String, Object> unionPay = new HashMap<>();
         String type = "YQPAY";
         Map payMap;
-        if (routingAccount != null) {
-            //易乾支付
-            payMap = YqPayUtil.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject, orderBody, routingAccount.getMerNo());
-        } else {
-            type = "UNIONPAY";
-            payMap = UnionPay.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject);
-        }
+//        if (routingAccount != null) {
+//            //易乾支付
+//            payMap = YqPayUtil.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject, orderBody, routingAccount.getMerNo());
+//        } else {
+//            type = "UNIONPAY";
+//            payMap = UnionPay.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject);
+//        }
+        type = "UNIONPAY";
+        payMap = UnionPay.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject);
         unionPay.put("orderNo", orderNo);
         unionPay.put("type", type);
         unionPay.put("payMap", payMap);

+ 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>
 
     <!-- 分页查询 -->

+ 4 - 18
mec-biz/src/main/resources/config/mybatis/DemoGroupMapper.xml

@@ -211,12 +211,6 @@ create_time_ = #{createTime},
 		SELECT * FROM demo_group WHERE user_id_=#{teacherId}
 	</select>
 
-	<sql id="teacherDemoGroupsQueryCondition">
-		<where>
-			dg.user_id_=#{teacherId}
-		</where>
-	</sql>
-
 	<select id="findTeacherDemoGroups" resultType="com.ym.mec.biz.dal.dto.TeacherManageDemoGroupListDto">
 		SELECT
 			cs.class_date_ classDate,
@@ -227,21 +221,13 @@ create_time_ = #{createTime},
 		LEFT JOIN demo_group_class_group_mapper dgcgm ON dg.id_=dgcgm.demo_group_id_
 		LEFT JOIN class_group cg ON dgcgm.class_group_id_=cg.id_
 		LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
-		LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,cg.subject_id_list_)
-		<include refid="teacherDemoGroupsQueryCondition"/>
+		LEFT JOIN `subject` s ON s.id_ = dg.subject_id_
+		WHERE cs.type_ = 'DEMO' AND dg.user_id_ = #{teacherId}
 		GROUP BY cs.class_date_
 		<include refid="global.limit"/>
 	</select>
-	<select id="countTeacherDemoGroups" resultType="int">
-		SELECT
-			count(*)
-		FROM
-			demo_group dg
-		LEFT JOIN demo_group_class_group_mapper dgcgm ON dg.id_=dgcgm.demo_group_id_
-		LEFT JOIN class_group cg ON dgcgm.class_group_id_=cg.id_
-		LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
-		<include refid="teacherDemoGroupsQueryCondition"/>
-		GROUP BY cs.class_date_
+	<select id="countTeacherDemoGroups" resultType="Integer">
+		SELECT COUNT(DISTINCT cs.class_date_) FROM course_schedule cs WHERE cs.type_ = 'DEMO' AND cs.actual_teacher_id_ = #{teacherId}
 	</select>
 
 	<select id="findDemoGroupStartClassTimesWithWeekByTeacherId" resultType="com.ym.mec.biz.dal.dto.EducationDemoGroupListDto">

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

@@ -23,6 +23,7 @@
         <result column="order_no_" property="orderNo"/>
         <result column="music_group_id_" property="musicGroupId"/>
         <result column="class_group_id_" property="classGroupId"/>
+        <result column="version_" property="version"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.entity.Goods" id="Goods">
@@ -121,8 +122,11 @@
             <if test="musicGroupId != null">
                 music_group_id_ = #{musicGroupId},
             </if>
+            <if test="version != null">
+                version_ = version_+1,
+            </if>
         </set>
-        WHERE id_ = #{id}
+        WHERE id_ = #{id} AND version_ = #{version}
     </update>
 
     <!-- 根据主键删除一条记录 -->

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/SysAccountMapper.xml

@@ -111,4 +111,12 @@
   <select id="getPerAccount" resultMap="SysAccount">
     SELECT * FROM sys_account WHERE channel_ = 'YQPAY' AND channel_type_ = 'PER'
   </select>
+
+  <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
+    INSERT INTO sys_account (id_,mer_no_,channel_)
+    VALUES
+    <foreach collection="sysAccountList" item="data" separator=",">
+      (#{data.id},#{data.merNo},#{data.channel})
+    </foreach>
+  </insert>
 </mapper>

+ 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>

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

@@ -132,7 +132,7 @@
             cs.start_class_time_,
             cg.name_,
             cg.type_,
-            ta.status_,
+            ta.sign_in_status_ status_,
             ta.remark_
         FROM
             teacher_attendance ta

+ 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>

+ 1 - 1
mec-student/src/main/java/com/ym/mec/student/config/ResourceServerConfig.java

@@ -22,7 +22,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 
 	@Override
 	public void configure(HttpSecurity http) throws Exception {
-		http.csrf().disable().authorizeRequests().antMatchers("/v2/api-docs", "/register/getMusicGroupRegInfo", "/register/add","musicGroup/getSubjectGoodsAndInfo","/musicGroup/test").permitAll().anyRequest().authenticated().and().httpBasic();
+		http.csrf().disable().authorizeRequests().antMatchers("/v2/api-docs", "/register/getMusicGroupRegInfo", "/register/add","musicGroup/getSubjectGoodsAndInfo","/musicGroup/test","/studentOrder/notify").permitAll().anyRequest().authenticated().and().httpBasic();
 	}
 
 	@Override

+ 2 - 2
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -348,8 +348,8 @@ public class MusicGroupController extends BaseController {
 //
         IdWorker idWorker = new IdWorker(0, 0);
         String orderNo = "1017" + idWorker.nextId();
-        BigDecimal amount = new BigDecimal("200");
-        Map map = payService.getPayMap(amount, orderNo, "https://pay.dayaedu.com/notify", "https://baodiu.com", "测试订单", "测试订单");
+        BigDecimal amount = new BigDecimal("0.01");
+        Map map = payService.getPayMap(amount, orderNo, "http://47.99.212.176:8000/studentOrder/notify", "https://baodiu.com", "测试订单", "测试订单");
        return succeed(map);
     }
 

+ 51 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -0,0 +1,51 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.biz.dal.dao.SysAccountDao;
+import com.ym.mec.biz.dal.entity.SysAccount;
+import com.ym.mec.biz.service.SysAccountService;
+import io.swagger.annotations.Api;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Map;
+
+@RequestMapping("studentOrder")
+@Api(tags = "订单回调")
+@RestController
+public class StudentOrderController {
+    private static final Logger log = LoggerFactory.getLogger(StudentOrderController.class);
+    @Autowired
+    private SysAccountDao sysAccountDao;
+
+
+    @PostMapping("/notify")
+    public String notify(HttpServletRequest request) {
+       Map<String,String[]> msg = request.getParameterMap();
+        ArrayList<SysAccount> sysAccounts = new ArrayList<>();
+        for (Map.Entry<String, String[]> stringObjectEntry : msg.entrySet()) {
+            SysAccount sysAccount = new SysAccount();
+            String KeyVal = "Key:" + stringObjectEntry.getKey() + " val:" + stringObjectEntry.getValue().toString();
+            log.warn(KeyVal);
+            sysAccount.setMerNo(stringObjectEntry.getKey());
+            sysAccount.setChannel(request.getParameter(stringObjectEntry.getKey()));
+            sysAccounts.add(sysAccount);
+        }
+        sysAccountDao.batchInsert(sysAccounts);
+
+        // "SUCCESS";
+        // "FAILED";
+
+        return "SUCCESS";
+    }
+
+
+    //
+}

+ 9 - 2
mec-teacher/src/main/java/com/ym/mec/teacher/controller/DemoGroupController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.teacher.controller;
 
 import com.ym.mec.biz.dal.dto.DemoGroupApplyDto;
+import com.ym.mec.biz.dal.page.TeacherManageDemoGroupQueryInfo;
 import com.ym.mec.biz.service.DemoGroupService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
@@ -27,10 +28,16 @@ public class DemoGroupController extends BaseController {
         return succeed();
     }
 
-    @ApiOperation(value = "获取试听课")
+    @ApiOperation(value = "获取老师试听课")
     @GetMapping("/getDemoGroupByTeacherId")
-    public Object getDemoGroupByTeacherId(){
+    public Object getDemoGroupByTeacherId() throws Exception {
         return succeed(demoGroupService.getDemoGroupByTeacherId());
     }
 
+    @ApiOperation(value = "获取教师试听课安排列表")
+    @GetMapping("/findTeacherDemoGroups")
+    public Object findTeacherDemoGroups(TeacherManageDemoGroupQueryInfo queryInfo) throws Exception {
+        return succeed(demoGroupService.findTeacherDemoGroups(queryInfo));
+    }
+
 }

+ 126 - 0
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/NotifyMsg.java

@@ -0,0 +1,126 @@
+package com.ym.mec.thirdparty.union;
+
+import java.math.BigDecimal;
+
+/**
+ * 异步通知具体信息
+ */
+public class NotifyMsg {
+    private String mid;//商户号
+    private String tid;//终端号
+    private String instMid;//业务类型
+    private String billFunds;//资金渠道
+    private String billFundsDesc;//资金渠道说明
+    private Integer totalAmount;//订单总金额(分)
+    private String merOrderId;//商户订单号
+    private String payTime;//支付时间
+    private String seqId; //支付系统交易流水号
+    private String status; //交易状态,NEW_ORDER-新订单 UNKNOWN-不明交易状态 TRADE_CLOSED-关闭的交易 WAIT_BUYER_PAY-交易创建等待付款 TRADE_SUCCESS-交易成功
+    private String targetOrderId; //渠道订单号
+    private String targetSys;//支付渠道,WXPay,等
+    private String sign;//签名
+
+    public String getMid() {
+        return mid;
+    }
+
+    public void setMid(String mid) {
+        this.mid = mid;
+    }
+
+    public String getTid() {
+        return tid;
+    }
+
+    public void setTid(String tid) {
+        this.tid = tid;
+    }
+
+    public String getInstMid() {
+        return instMid;
+    }
+
+    public void setInstMid(String instMid) {
+        this.instMid = instMid;
+    }
+
+    public String getBillFunds() {
+        return billFunds;
+    }
+
+    public void setBillFunds(String billFunds) {
+        this.billFunds = billFunds;
+    }
+
+    public String getBillFundsDesc() {
+        return billFundsDesc;
+    }
+
+    public void setBillFundsDesc(String billFundsDesc) {
+        this.billFundsDesc = billFundsDesc;
+    }
+
+    public Integer getTotalAmount() {
+        return totalAmount;
+    }
+
+    public void setTotalAmount(Integer totalAmount) {
+        this.totalAmount = totalAmount;
+    }
+
+    public String getMerOrderId() {
+        return merOrderId;
+    }
+
+    public void setMerOrderId(String merOrderId) {
+        this.merOrderId = merOrderId;
+    }
+
+    public String getPayTime() {
+        return payTime;
+    }
+
+    public void setPayTime(String payTime) {
+        this.payTime = payTime;
+    }
+
+    public String getSeqId() {
+        return seqId;
+    }
+
+    public void setSeqId(String seqId) {
+        this.seqId = seqId;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getTargetOrderId() {
+        return targetOrderId;
+    }
+
+    public void setTargetOrderId(String targetOrderId) {
+        this.targetOrderId = targetOrderId;
+    }
+
+    public String getTargetSys() {
+        return targetSys;
+    }
+
+    public void setTargetSys(String targetSys) {
+        this.targetSys = targetSys;
+    }
+
+    public String getSign() {
+        return sign;
+    }
+
+    public void setSign(String sign) {
+        this.sign = sign;
+    }
+}

+ 10 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -168,4 +168,14 @@ public class ClassGroupController extends BaseController {
         return succeed();
     }
 
+
+    @ApiOperation(value = "合并班级")
+    @PostMapping("/mergeClassGroup")
+    @ApiImplicitParams({@ApiImplicitParam(name = "classGroupIds", value = "班级编号,号分割", required = true, dataType = "String")})
+    public HttpResponseResult mergeClassGroup(String classGroupIds) throws Exception {
+        //软删除班级
+
+        return succeed();
+    }
+
 }