Bladeren bron

add 乐团报名增加购买云教练

周箭河 4 jaren geleden
bovenliggende
commit
0c5938440f

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherDao.java

@@ -0,0 +1,8 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.CloudTeacher;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface CloudTeacherDao extends BaseDAO<Long, CloudTeacher> {
+
+}

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java

@@ -0,0 +1,8 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
+
+}

+ 132 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacher.java

@@ -0,0 +1,132 @@
+package com.ym.mec.biz.dal.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.Date;
+
+@ApiModel(value="com-domain-CloudTeacher")
+public class CloudTeacher {
+    @ApiModelProperty(value="")
+    private Integer id;
+
+    /**
+    * 学生id
+    */
+    @ApiModelProperty(value="学生id")
+    private Integer studentId;
+
+    /**
+    * 等级
+    */
+    @ApiModelProperty(value="等级")
+    private Integer level;
+
+    /**
+    * 服务开始时间
+    */
+    @ApiModelProperty(value="服务开始时间")
+    private Date startTime;
+
+    /**
+    * 服务结束时间
+    */
+    @ApiModelProperty(value="服务结束时间")
+    private Date endTime;
+
+    @ApiModelProperty(value="")
+    private Integer version;
+
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty(value="创建时间")
+    private Date createTime;
+
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty(value="修改时间")
+    private Date updateTime;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
+
+    public Integer getLevel() {
+        return level;
+    }
+
+    public void setLevel(Integer level) {
+        this.level = level;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public Integer getVersion() {
+        return version;
+    }
+
+    public void setVersion(Integer version) {
+        this.version = version;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", studentId=").append(studentId);
+        sb.append(", level=").append(level);
+        sb.append(", startTime=").append(startTime);
+        sb.append(", endTime=").append(endTime);
+        sb.append(", version=").append(version);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 238 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherOrder.java

@@ -0,0 +1,238 @@
+package com.ym.mec.biz.dal.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value = "com-domain-CloudTeacherOrder")
+public class CloudTeacherOrder {
+    @ApiModelProperty(value = "")
+    private Long id;
+
+    /**
+     * 学生id
+     */
+    @ApiModelProperty(value = "分部id")
+    private Integer organId;
+
+    /**
+     * 学生id
+     */
+    @ApiModelProperty(value = "学生id")
+    private Integer studentId;
+
+    /**
+     * 时长类型 1-天 2-月 3-年
+     */
+    @ApiModelProperty(value = "时长类型 1-天 2-月 3-年")
+    private Integer type;
+
+    /**
+     * 时长类型 1-天 2-月 3-年
+     */
+    @ApiModelProperty(value = "会员等级")
+    private Integer level;
+
+    /**
+     * 购买时长
+     */
+    @ApiModelProperty(value = "购买时长")
+    private Integer time;
+
+    /**
+     * 购买价格
+     */
+    @ApiModelProperty(value = "购买价格")
+    private BigDecimal amount;
+
+    /**
+     * 退回金额
+     */
+    @ApiModelProperty(value = "退回金额")
+    private BigDecimal refundAmount = BigDecimal.ZERO;
+
+    /**
+     * 1-生效中 2-已生效 3-已退
+     */
+    @ApiModelProperty(value = "1-生效中 2-已生效 3-已退")
+    private Integer status;
+
+    /**
+     * 服务开始时间
+     */
+    @ApiModelProperty(value = "服务开始时间")
+    private Date startTime;
+
+    /**
+     * 服务结束时间
+     */
+    @ApiModelProperty(value = "服务结束时间")
+    private Date endTime;
+
+    /**
+     * 订单id
+     */
+    @ApiModelProperty(value = "订单id")
+    private Long orderId;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注")
+    private String remark = "";
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public Integer getTime() {
+        return time;
+    }
+
+    public void setTime(Integer time) {
+        this.time = time;
+    }
+
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
+    public BigDecimal getRefundAmount() {
+        return refundAmount;
+    }
+
+    public void setRefundAmount(BigDecimal refundAmount) {
+        this.refundAmount = refundAmount;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Long getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Long orderId) {
+        this.orderId = orderId;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Integer getLevel() {
+        return level;
+    }
+
+    public void setLevel(Integer level) {
+        this.level = level;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", studentId=").append(studentId);
+        sb.append(", type=").append(type);
+        sb.append(", time=").append(time);
+        sb.append(", amount=").append(amount);
+        sb.append(", refundAmount=").append(refundAmount);
+        sb.append(", status=").append(status);
+        sb.append(", orderId=").append(orderId);
+        sb.append(", remark=").append(remark);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append("]");
+        return sb.toString();
+    }
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+}

+ 29 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/CloudTeacherTimeType.java

@@ -0,0 +1,29 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+/**
+ * 云教练购买时长单位
+ */
+public enum CloudTeacherTimeType implements BaseEnum<Integer, CloudTeacherTimeType> {
+    DAY(1, "天"),
+    MONTH(2, "月"),
+    YEAR(3, "年");
+
+    private Integer code;
+    private String msg;
+
+    CloudTeacherTimeType(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    @Override
+    public Integer getCode() {
+        return code;
+    }
+}

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderDetailTypeEnum.java

@@ -25,7 +25,8 @@ public enum OrderDetailTypeEnum implements BaseEnum<String, OrderDetailTypeEnum>
     MUSIC_NETWORK("MUSIC_NETWORK", "乐团网管课"),
     CLASSROOM("CLASSROOM", "课堂课"),
 	DEGREE_REGISTRATION("DEGREE_REGISTRATION", "考级报名"),
-    MAINTENANCE("MAINTENANCE","乐保服务");
+    MAINTENANCE("MAINTENANCE","乐保服务"),
+    CLOUD_TEACHER("CLOUD_TEACHER","云教练");
 
     private String code;
 

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CloudTeacherOrderService.java

@@ -0,0 +1,17 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.common.service.BaseService;
+
+public interface CloudTeacherOrderService extends BaseService<Long, CloudTeacherOrder> {
+
+
+    /**
+     * 将订单详情云教练加入云教练购买列表
+     * @param order
+     * @return
+     */
+    Boolean addOrderDetail2CloudTeacher(StudentPaymentOrder order);
+
+}

+ 6 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -6,7 +6,6 @@ import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
 import com.ym.mec.common.page.PageInfo;
-import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.io.IOException;
@@ -95,26 +94,28 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      * @param courseRemitFee
      * @param newCourses
      * @param buyMaintenance
+     * @param buyCloudTeacher
      * @return
      * @throws Exception
      */
     StudentPaymentOrder addOrder(StudentRegistration studentRegistration, BigDecimal amount, String orderNo, String paymentChannel, BigDecimal courseFee,
-                                 List<MusicGroupSubjectGoodsGroup> goodsGroups,BigDecimal remitFee, BigDecimal courseRemitFee,
-                                 List<MusicGroupPaymentCalenderCourseSettings> newCourses,Boolean buyMaintenance) throws Exception;
+                                 List<MusicGroupSubjectGoodsGroup> goodsGroups, BigDecimal remitFee, BigDecimal courseRemitFee,
+                                 List<MusicGroupPaymentCalenderCourseSettings> newCourses, Boolean buyMaintenance, Boolean buyCloudTeacher) throws Exception;
 
     /**
      * 学生注册缴费重新下订单
      *
+     * @param goodsList
      * @param userId
      * @param amount
      * @param courseFee
      * @param goodsGroups
-     * @param goodsList
+     * @param buyCloudTeacher
      * @return
      */
     StudentPaymentOrder reAddOrder(
             Integer userId, BigDecimal amount, String orderNo, String paymentChannel, BigDecimal courseFee,
-            List<MusicGroupSubjectGoodsGroup> goodsGroups, String musicGroupId, StudentPaymentOrder oldOrder, BigDecimal remitFee, BigDecimal courseRemitFee, List<MusicGroupPaymentCalenderCourseSettings> newCourses,Boolean buyMaintenance) throws Exception;
+            List<MusicGroupSubjectGoodsGroup> goodsGroups, String musicGroupId, StudentPaymentOrder oldOrder, BigDecimal remitFee, BigDecimal courseRemitFee, List<MusicGroupPaymentCalenderCourseSettings> newCourses, Boolean buyMaintenance, Boolean buyCloudTeacher) throws Exception;
 
     /**
      * 查询用户指定乐团的报名信息

+ 52 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -0,0 +1,52 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
+import com.ym.mec.biz.service.CloudTeacherOrderService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTeacherOrder> implements CloudTeacherOrderService {
+
+    @Autowired
+    private CloudTeacherOrderDao cloudTeacherOrderDao;
+    @Autowired
+    private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
+
+
+    @Override
+    public BaseDAO<Long, CloudTeacherOrder> getDAO() {
+        return cloudTeacherOrderDao;
+    }
+
+    @Override
+    public Boolean addOrderDetail2CloudTeacher(StudentPaymentOrder order) {
+        List<OrderDetailTypeEnum> orderDetailTypes = new ArrayList<>();
+        orderDetailTypes.add(OrderDetailTypeEnum.CLOUD_TEACHER);
+        List<StudentPaymentOrderDetail> orderDetails = studentPaymentOrderDetailDao.getOrderDetailByType(order.getId(), orderDetailTypes);
+        if (orderDetails.size() <= 0) {
+            return true;
+        }
+        StudentPaymentOrderDetail orderDetail = orderDetails.get(0);
+        CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
+        cloudTeacherOrder.setOrganId(order.getOrganId());
+        cloudTeacherOrder.setStudentId(order.getUserId());
+        cloudTeacherOrder.setType(2);
+        cloudTeacherOrder.setLevel(3);
+        cloudTeacherOrder.setTime(6);
+        cloudTeacherOrder.setAmount(orderDetail.getPrice());
+        cloudTeacherOrder.setStatus(1);
+        cloudTeacherOrder.setOrderId(order.getId());
+        cloudTeacherOrderDao.insert(cloudTeacherOrder);
+        return true;
+    }
+}

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

@@ -717,7 +717,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         String channelType = "";
 
-        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.addOrder(studentRegistration, amount, orderNo, channelType, courseFee, goodsGroups, remitFee, courseRemitFee, newCourses, registerPayDto.getBuyMaintenance());
+        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.addOrder(studentRegistration, amount, orderNo, channelType, courseFee, goodsGroups, remitFee, courseRemitFee, newCourses, registerPayDto.getBuyMaintenance(), registerPayDto.getBuyCloudTeacher());
         studentPaymentOrder.setVersion(0);
 
         Date date = new Date();
@@ -876,7 +876,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         String channelType = "";
 
-        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.reAddOrder(userId, amount, orderNo, channelType, courseFee, goodsGroups, studentRegistration.getMusicGroupId(), ApplyOrder, remitFee, courseRemitFee, newCourses, registerPayDto.getBuyMaintenance());
+        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.reAddOrder(userId, amount, orderNo, channelType, courseFee, goodsGroups, studentRegistration.getMusicGroupId(), ApplyOrder, remitFee, courseRemitFee, newCourses, registerPayDto.getBuyMaintenance(), registerPayDto.getBuyCloudTeacher());
         studentPaymentOrder.setVersion(0);
         Date date = new Date();
 

+ 40 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -25,11 +25,7 @@ import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
 import com.ym.mec.biz.service.*;
-import com.ym.mec.common.page.QueryInfo;
-import com.ym.mec.im.WebFeignService;
-import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.ss.formula.functions.T;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -149,6 +145,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     private EmployeeDao employeeDao;
     @Autowired
     private StudentInstrumentDao studentInstrumentDao;
+    @Autowired
+    private OrganizationCloudTeacherFeeDao organizationCloudTeacherFeeDao;
+    @Autowired
+    private CloudTeacherOrderService cloudTeacherOrderService;
 
     @Override
     public BaseDAO<Long, StudentRegistration> getDAO() {
@@ -378,7 +378,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Override
     @Transactional(rollbackFor = Exception.class)
     public StudentPaymentOrder addOrder(StudentRegistration studentRegistration, BigDecimal amount, String orderNo, String paymentChannel,
-                                        BigDecimal courseFee, List<MusicGroupSubjectGoodsGroup> goodsGroups, BigDecimal remitFee, BigDecimal courseRemitFee, List<MusicGroupPaymentCalenderCourseSettings> newCourses, Boolean buyMaintenance) throws Exception {
+                                        BigDecimal courseFee, List<MusicGroupSubjectGoodsGroup> goodsGroups, BigDecimal remitFee, BigDecimal courseRemitFee, List<MusicGroupPaymentCalenderCourseSettings> newCourses, Boolean buyMaintenance, Boolean buyCloudTeacher) throws Exception {
         Date date = new Date();
         StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
         studentPaymentOrder.setUserId(studentRegistration.getUserId());
@@ -464,6 +464,20 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             maintenanceOrderDetail.setIsRenew(0);
             studentPaymentOrderDetailList.add(maintenanceOrderDetail);
         }
+        //云教练
+        if (buyCloudTeacher) {
+            OrganizationCloudTeacherFee cloudTeacher = organizationCloudTeacherFeeDao.getByOrganId(studentRegistration.getOrganId());
+            BigDecimal cloudTeacherPrice = cloudTeacher.getPrice();
+            StudentPaymentOrderDetail cloudTeacherOrderDetail = new StudentPaymentOrderDetail();
+            cloudTeacherOrderDetail.setType(OrderDetailTypeEnum.CLOUD_TEACHER);
+            cloudTeacherOrderDetail.setPrice(cloudTeacherPrice);
+            cloudTeacherOrderDetail.setRemitFee(BigDecimal.ZERO);
+            cloudTeacherOrderDetail.setCreateTime(date);
+            cloudTeacherOrderDetail.setUpdateTime(date);
+            cloudTeacherOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
+            cloudTeacherOrderDetail.setIsRenew(0);
+            studentPaymentOrderDetailList.add(cloudTeacherOrderDetail);
+        }
         studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
 
         MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
@@ -471,7 +485,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         //增加缴费学生数
         boolean updateFlag = false;
         for (int i = 0; i < 10; i++) {
-            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.AMR) && amount.compareTo(BigDecimal.ZERO) <= 0) { //0元订单不增加报名人数
+            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) && amount.compareTo(BigDecimal.ZERO) <= 0) { //0元订单不增加报名人数
                 updateFlag = true;
                 break;
             }
@@ -499,8 +513,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     public StudentPaymentOrder reAddOrder(Integer userId, BigDecimal amount, String orderNo, String paymentChannel, BigDecimal courseFee,
                                           List<MusicGroupSubjectGoodsGroup> goodsGroups, String musicGroupId, StudentPaymentOrder oldOrder,
                                           BigDecimal remitFee, BigDecimal courseRemitFee, List<MusicGroupPaymentCalenderCourseSettings> newCourses,
-                                          Boolean buyMaintenance
-    ) {
+                                          Boolean buyMaintenance,
+                                          Boolean buyCloudTeacher) {
         //关闭老订单
         oldOrder.setStatus(DealStatusEnum.CLOSE);
         studentPaymentOrderService.update(oldOrder);
@@ -592,6 +606,20 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             maintenanceOrderDetail.setIsRenew(0);
             studentPaymentOrderDetailList.add(maintenanceOrderDetail);
         }
+        //云教练
+        if (buyCloudTeacher) {
+            OrganizationCloudTeacherFee cloudTeacher = organizationCloudTeacherFeeDao.getByOrganId(oldOrder.getOrganId());
+            BigDecimal cloudTeacherPrice = cloudTeacher.getPrice();
+            StudentPaymentOrderDetail cloudTeacherOrderDetail = new StudentPaymentOrderDetail();
+            cloudTeacherOrderDetail.setType(OrderDetailTypeEnum.CLOUD_TEACHER);
+            cloudTeacherOrderDetail.setPrice(cloudTeacherPrice);
+            cloudTeacherOrderDetail.setRemitFee(BigDecimal.ZERO);
+            cloudTeacherOrderDetail.setCreateTime(date);
+            cloudTeacherOrderDetail.setUpdateTime(date);
+            cloudTeacherOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
+            cloudTeacherOrderDetail.setIsRenew(0);
+            studentPaymentOrderDetailList.add(cloudTeacherOrderDetail);
+        }
         studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
 
         return studentPaymentOrder;
@@ -1042,6 +1070,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             BigDecimal courseFee = allDetails.stream().filter(o -> !o.getType().getCode().equals("MUSICAL"))
                     .filter(o -> !o.getType().getCode().equals("ACCESSORIES"))
                     .filter(o -> !o.getType().getCode().equals("MAINTENANCE"))
+                    .filter(o -> !o.getType().getCode().equals("CLOUD_TEACHER"))
                     .map(o -> o.getPrice().subtract(o.getRemitFee() == null ? BigDecimal.ZERO : o.getRemitFee()))
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
 
@@ -1118,6 +1147,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             //学生乐器与月保处理
             studentInstrumentService.addOrderDetail2Instrument(studentPaymentOrder);
 
+            //学生云教练处理
+            cloudTeacherOrderService.addOrderDetail2CloudTeacher(studentPaymentOrder);
+
             //合并学员处理
             if (studentRegistration.getIsMerge().equals(1) && studentPaymentOrder.getExpectAmount().compareTo(BigDecimal.ZERO) <= 0) {
                 return studentPaymentOrder;

+ 79 - 0
mec-biz/src/main/resources/config/mybatis/CloudTeacherMapper.xml

@@ -0,0 +1,79 @@
+<?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.CloudTeacherDao">
+  <resultMap id="CloudTeacher" type="com.ym.mec.biz.dal.entity.CloudTeacher">
+    <!--@mbg.generated-->
+    <!--@Table cloud_teacher-->
+    <id column="id_" property="id" />
+    <result column="student_id_" property="studentId" />
+    <result column="level_" property="level" />
+    <result column="start_time_" property="startTime" />
+    <result column="end_time_" property="endTime" />
+    <result column="version_" property="version" />
+    <result column="create_time_" property="createTime" />
+    <result column="update_time_" property="updateTime" />
+  </resultMap>
+
+  <select id="get" parameterType="java.lang.Integer" resultMap="CloudTeacher">
+    <!--@mbg.generated-->
+    select * from cloud_teacher
+    where id_ = #{id}
+  </select>
+  <delete id="delete" parameterType="java.lang.Integer">
+    <!--@mbg.generated-->
+    delete from cloud_teacher
+    where id_ = #{id}
+  </delete>
+  <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.CloudTeacher" useGeneratedKeys="true">
+    <!--@mbg.generated-->
+    insert into cloud_teacher (student_id_, level_, start_time_, end_time_, version_, create_time_, 
+      update_time_)
+    values (#{studentId}, #{level}, #{startTime}, #{endTime}, #{version}, #{createTime}, 
+      #{updateTime})
+  </insert>
+  <update id="update" parameterType="com.ym.mec.biz.dal.entity.CloudTeacher">
+    <!--@mbg.generated-->
+    update cloud_teacher
+    <set>
+      <if test="studentId != null">
+        student_id_ = #{studentId},
+      </if>
+      <if test="level != null">
+        level_ = #{level},
+      </if>
+      <if test="startTime != null">
+        start_time_ = #{startTime},
+      </if>
+      <if test="endTime != null">
+        end_time_ = #{endTime},
+      </if>
+      <if test="version != null">
+        version_ = #{version},
+      </if>
+      <if test="createTime != null">
+        create_time_ = #{createTime},
+      </if>
+      <if test="updateTime != null">
+        update_time_ = #{updateTime},
+      </if>
+    </set>
+    where id_ = #{id}
+  </update>
+
+  <!-- 全查询 -->
+  <select id="findAll" resultMap="CloudTeacher">
+    SELECT * FROM cloud_teacher_order
+  </select>
+
+  <!-- 分页查询 -->
+  <select id="queryPage" resultMap="CloudTeacher" parameterType="map">
+    SELECT * FROM cloud_teacher_order
+    <include refid="global.limit"/>
+  </select>
+
+  <!-- 查询当前表的总记录数 -->
+  <select id="queryCount" resultType="int">
+    SELECT COUNT(*)
+    FROM cloud_teacher_order
+  </select>
+</mapper>

+ 109 - 0
mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml

@@ -0,0 +1,109 @@
+<?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.CloudTeacherOrderDao">
+    <resultMap id="CloudTeacherOrder" type="com.ym.mec.biz.dal.entity.CloudTeacherOrder">
+        <!--@mbg.generated-->
+        <!--@Table cloud_teacher_order-->
+        <id column="id_" property="id"/>
+        <result column="organ_id_" property="organId"/>
+        <result column="student_id_" property="studentId"/>
+        <result column="type_" property="type"/>
+        <result column="level_" property="level"/>
+        <result column="time_" property="time"/>
+        <result column="amount_" property="amount"/>
+        <result column="refund_amount_" property="refundAmount"/>
+        <result column="status_" property="status"/>
+        <result column="start_time_" property="startTime"/>
+        <result column="end_time_" property="endTime"/>
+        <result column="order_id_" property="orderId"/>
+        <result column="remark_" property="remark"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+    </resultMap>
+
+    <select id="get" resultMap="CloudTeacherOrder">
+        <!--@mbg.generated-->
+        select * from cloud_teacher_order where id_ = #{id}
+    </select>
+    <delete id="delete">
+        <!--@mbg.generated-->
+        delete from cloud_teacher_order
+        where id_ = #{id}
+    </delete>
+    <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.CloudTeacherOrder"
+            useGeneratedKeys="true">
+        <!--@mbg.generated-->
+        insert into cloud_teacher_order (organ_id_,student_id_, type_, level_, time_, amount_, refund_amount_, status_, order_id_,
+        remark_, create_time_, update_time_)
+        values (#{orderId},#{studentId}, #{type},#{level}, #{time}, #{amount}, #{refundAmount}, #{status},#{startTime},#{endTime},
+        #{orderId},
+        #{remark}, #{createTime}, #{updateTime})
+    </insert>
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.CloudTeacherOrder">
+        <!--@mbg.generated-->
+        update cloud_teacher_order
+        <set>
+            <if test="orderId != null">
+                organ_id_ = #{orderId},
+            </if>
+            <if test="studentId != null">
+                student_id_ = #{studentId},
+            </if>
+            <if test="type != null">
+                type_ = #{type},
+            </if>
+            <if test="level != null">
+                level_ = #{level},
+            </if>
+            <if test="time != null">
+                time_ = #{time},
+            </if>
+            <if test="amount != null">
+                amount_ = #{amount},
+            </if>
+            <if test="refundAmount != null">
+                refund_amount_ = #{refundAmount},
+            </if>
+            <if test="status != null">
+                status_ = #{status},
+            </if>
+            <if test="startTime != null">
+                start_time_ = #{startTime},
+            </if>
+            <if test="endTime != null">
+                end_time_ = #{endTime},
+            </if>
+            <if test="orderId != null">
+                order_id_ = #{orderId},
+            </if>
+            <if test="remark != null">
+                remark_ = #{remark},
+            </if>
+            <if test="createTime != null">
+                create_time_ = #{createTime},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = #{updateTime},
+            </if>
+        </set>
+        where id_ = #{id}
+    </update>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="CloudTeacherOrder">
+        SELECT *
+        FROM cloud_teacher_order
+    </select>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="CloudTeacherOrder" parameterType="map">
+        SELECT * FROM cloud_teacher_order
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*)
+        FROM cloud_teacher_order
+    </select>
+</mapper>