浏览代码

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

 Conflicts:
	mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
zouxuan 4 年之前
父节点
当前提交
ab7cd8cbf7
共有 22 个文件被更改,包括 868 次插入32 次删除
  1. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ChildrenDayDegreeDetailDao.java
  2. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ChildrenDayDegreeInfoDao.java
  3. 32 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ChildrenDayDetailDto.java
  4. 40 10
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ChildrenStatisticsDto.java
  5. 22 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/DegreePayDto.java
  6. 220 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ChildrenDayDegreeInfo.java
  7. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderDetailTypeEnum.java
  8. 47 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ChildrenDayDegreeDetailService.java
  9. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ChildrenDayReserveService.java
  10. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  11. 123 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ChildrenDayDegreeDetailServiceImpl.java
  12. 127 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ChildrenDayReserveServiceImpl.java
  13. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java
  14. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  15. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  16. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  17. 18 0
      mec-biz/src/main/resources/config/mybatis/ChildrenDayDegreeDetailDao.xml
  18. 106 0
      mec-biz/src/main/resources/config/mybatis/ChildrenDayDegreeInfoDao.xml
  19. 18 6
      mec-biz/src/main/resources/config/mybatis/ChildrenDayReserveMapper.xml
  20. 2 2
      mec-biz/src/main/resources/config/mybatis/SysUserCashAccountDetailMapper.xml
  21. 2 2
      mec-biz/src/main/resources/config/mybatis/SysUserCoursesAccountDetailMapper.xml
  22. 51 0
      mec-student/src/main/java/com/ym/mec/student/controller/ChildrenDayDegreeDetailController.java

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ChildrenDayDegreeDetailDao.java

@@ -15,4 +15,21 @@ public interface ChildrenDayDegreeDetailDao extends BaseDAO<Integer, ChildrenDay
      * @return
      */
     List<ChildrenDayDegreeDetail> getByUserIdAndStatus(@Param("userId") Integer userId, @Param("status") Integer status);
+
+    /**
+     * 批量插入购买详情
+     *
+     * @param details
+     * @return
+     */
+    int batchAdd(@Param("details") List<ChildrenDayDegreeDetail> details);
+
+    /**
+     * 跟新状态信息
+     *
+     * @param orderId
+     * @param status
+     * @return
+     */
+    int updateStatus(@Param("orderId") Long orderId, @Param("status") Integer status);
 }

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

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

+ 32 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ChildrenDayDetailDto.java

@@ -0,0 +1,32 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.ChildrenDayDegreeDetail;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+public class ChildrenDayDetailDto {
+
+    @ApiModelProperty(value = "用户信息", required = false)
+    private SysUser user;
+
+    @ApiModelProperty(value = "购买信息详情", required = false)
+    private List<ChildrenDayDegreeDetail> childrenDayDegreeDetails;
+
+    public SysUser getUser() {
+        return user;
+    }
+
+    public void setUser(SysUser user) {
+        this.user = user;
+    }
+
+    public List<ChildrenDayDegreeDetail> getChildrenDayDegreeDetails() {
+        return childrenDayDegreeDetails;
+    }
+
+    public void setChildrenDayDegreeDetails(List<ChildrenDayDegreeDetail> childrenDayDegreeDetails) {
+        this.childrenDayDegreeDetails = childrenDayDegreeDetails;
+    }
+}

+ 40 - 10
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ChildrenStatisticsDto.java

@@ -26,14 +26,20 @@ public class ChildrenStatisticsDto {
 
     private Integer musicTheoryNum = 0;
 
-    private Integer buyVipNum = 0;
+    private Integer buyVip1Num = 0;
 
-    private BigDecimal buyVipAmount = BigDecimal.ZERO;
+    private BigDecimal buyVip1Amount = BigDecimal.ZERO;
+
+    private Integer buyVip2Num = 0;
+
+    private BigDecimal buyVip2Amount = BigDecimal.ZERO;
 
     private Integer buyMusicTheoryNum = 0;
 
     private BigDecimal buyMusicTheoryAmount = BigDecimal.ZERO;
 
+    private BigDecimal totalAmount = BigDecimal.ZERO;
+
     public Integer getOrganId() {
         return organId;
     }
@@ -122,20 +128,44 @@ public class ChildrenStatisticsDto {
         this.musicTheoryNum = musicTheoryNum;
     }
 
-    public Integer getBuyVipNum() {
-        return buyVipNum;
+    public Integer getBuyVip1Num() {
+        return buyVip1Num;
+    }
+
+    public void setBuyVip1Num(Integer buyVip1Num) {
+        this.buyVip1Num = buyVip1Num;
+    }
+
+    public BigDecimal getBuyVip1Amount() {
+        return buyVip1Amount;
+    }
+
+    public void setBuyVip1Amount(BigDecimal buyVip1Amount) {
+        this.buyVip1Amount = buyVip1Amount;
+    }
+
+    public Integer getBuyVip2Num() {
+        return buyVip2Num;
+    }
+
+    public void setBuyVip2Num(Integer buyVip2Num) {
+        this.buyVip2Num = buyVip2Num;
+    }
+
+    public BigDecimal getBuyVip2Amount() {
+        return buyVip2Amount;
     }
 
-    public void setBuyVipNum(Integer buyVipNum) {
-        this.buyVipNum = buyVipNum;
+    public void setBuyVip2Amount(BigDecimal buyVip2Amount) {
+        this.buyVip2Amount = buyVip2Amount;
     }
 
-    public BigDecimal getBuyVipAmount() {
-        return buyVipAmount;
+    public BigDecimal getTotalAmount() {
+        return totalAmount;
     }
 
-    public void setBuyVipAmount(BigDecimal buyVipAmount) {
-        this.buyVipAmount = buyVipAmount;
+    public void setTotalAmount(BigDecimal totalAmount) {
+        this.totalAmount = totalAmount;
     }
 
     public Integer getBuyMusicTheoryNum() {

+ 22 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/DegreePayDto.java

@@ -20,10 +20,10 @@ public class DegreePayDto {
     private Integer theoryLevel;
 
     @ApiModelProperty(value = "vip 1v1")
-    private boolean vip1v1=false;
+    private boolean vip1v1 = false;
 
     @ApiModelProperty(value = "vip 1v2")
-    private Boolean vip1v2=false;
+    private Boolean vip1v2 = false;
 
     @ApiModelProperty(value = "乐理课程")
     private Boolean theoryCourse = false;
@@ -39,6 +39,10 @@ public class DegreePayDto {
 
     private SysUser user;
 
+    private Long orderId;
+
+    private Integer reserveId;
+
     public Integer getSubject() {
         return subject;
     }
@@ -134,4 +138,20 @@ public class DegreePayDto {
     public void setUser(SysUser user) {
         this.user = user;
     }
+
+    public Long getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Long orderId) {
+        this.orderId = orderId;
+    }
+
+    public Integer getReserveId() {
+        return reserveId;
+    }
+
+    public void setReserveId(Integer reserveId) {
+        this.reserveId = reserveId;
+    }
 }

+ 220 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ChildrenDayDegreeInfo.java

@@ -0,0 +1,220 @@
+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-ChildrenDayDegreeInfo")
+public class ChildrenDayDegreeInfo {
+    @ApiModelProperty(value="")
+    private Integer id;
+
+    /**
+    * 预约id
+    */
+    @ApiModelProperty(value="预约id")
+    private Integer reserveId;
+
+    /**
+    * 用户id
+    */
+    @ApiModelProperty(value="用户id")
+    private Integer userId;
+
+    /**
+    * 声部id
+    */
+    @ApiModelProperty(value="声部id")
+    private Integer subjectId;
+
+    /**
+    * 器乐等级
+    */
+    @ApiModelProperty(value="器乐等级")
+    private Integer gradeLevel;
+
+    /**
+    * 器乐支付金额
+    */
+    @ApiModelProperty(value="器乐支付金额")
+    private BigDecimal gradePrice;
+
+    /**
+    * 乐理等级
+    */
+    @ApiModelProperty(value="乐理等级")
+    private Integer theoryLevel;
+
+    /**
+    * 乐理支付金额
+    */
+    @ApiModelProperty(value="乐理支付金额")
+    private BigDecimal theoryPrice;
+
+    /**
+    * vip 1v1支付价格
+    */
+    @ApiModelProperty(value="vip 1v1支付价格")
+    private BigDecimal vip1v1Price;
+
+    /**
+    * vip 1v2支付价格
+    */
+    @ApiModelProperty(value="vip 1v2支付价格")
+    private BigDecimal vip1v2Price;
+
+    /**
+    * 乐理课支付价格
+    */
+    @ApiModelProperty(value="乐理课支付价格")
+    private BigDecimal theoryCoursePrice;
+
+    /**
+    * 支付总金额
+    */
+    @ApiModelProperty(value="支付总金额")
+    private BigDecimal totalAmount;
+
+    @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 getReserveId() {
+        return reserveId;
+    }
+
+    public void setReserveId(Integer reserveId) {
+        this.reserveId = reserveId;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public Integer getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Integer subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public Integer getGradeLevel() {
+        return gradeLevel;
+    }
+
+    public void setGradeLevel(Integer gradeLevel) {
+        this.gradeLevel = gradeLevel;
+    }
+
+    public BigDecimal getGradePrice() {
+        return gradePrice;
+    }
+
+    public void setGradePrice(BigDecimal gradePrice) {
+        this.gradePrice = gradePrice;
+    }
+
+    public Integer getTheoryLevel() {
+        return theoryLevel;
+    }
+
+    public void setTheoryLevel(Integer theoryLevel) {
+        this.theoryLevel = theoryLevel;
+    }
+
+    public BigDecimal getTheoryPrice() {
+        return theoryPrice;
+    }
+
+    public void setTheoryPrice(BigDecimal theoryPrice) {
+        this.theoryPrice = theoryPrice;
+    }
+
+    public BigDecimal getVip1v1Price() {
+        return vip1v1Price;
+    }
+
+    public void setVip1v1Price(BigDecimal vip1v1Price) {
+        this.vip1v1Price = vip1v1Price;
+    }
+
+    public BigDecimal getVip1v2Price() {
+        return vip1v2Price;
+    }
+
+    public void setVip1v2Price(BigDecimal vip1v2Price) {
+        this.vip1v2Price = vip1v2Price;
+    }
+
+    public BigDecimal getTheoryCoursePrice() {
+        return theoryCoursePrice;
+    }
+
+    public void setTheoryCoursePrice(BigDecimal theoryCoursePrice) {
+        this.theoryCoursePrice = theoryCoursePrice;
+    }
+
+    public BigDecimal getTotalAmount() {
+        return totalAmount;
+    }
+
+    public void setTotalAmount(BigDecimal totalAmount) {
+        this.totalAmount = totalAmount;
+    }
+
+    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(", reserveId=").append(reserveId);
+        sb.append(", userId=").append(userId);
+        sb.append(", subjectId=").append(subjectId);
+        sb.append(", gradeLevel=").append(gradeLevel);
+        sb.append(", gradePrice=").append(gradePrice);
+        sb.append(", theoryLevel=").append(theoryLevel);
+        sb.append(", theoryPrice=").append(theoryPrice);
+        sb.append(", vip1v1Price=").append(vip1v1Price);
+        sb.append(", vip1v2Price=").append(vip1v2Price);
+        sb.append(", theoryCoursePrice=").append(theoryCoursePrice);
+        sb.append(", totalAmount=").append(totalAmount);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append("]");
+        return sb.toString();
+    }
+}

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

@@ -27,7 +27,8 @@ public enum OrderDetailTypeEnum implements BaseEnum<String, OrderDetailTypeEnum>
 	DEGREE_REGISTRATION("DEGREE_REGISTRATION", "考级报名"),
     MAINTENANCE("MAINTENANCE","乐保服务"),
     CLOUD_TEACHER("CLOUD_TEACHER","云教练"),
-    CLOUD_TEACHER_PLUS("CLOUD_TEACHER_PLUS","云教练+");
+    CLOUD_TEACHER_PLUS("CLOUD_TEACHER_PLUS","云教练+"),
+    THEORY_COURSE("THEORY_COURSE", "乐理课");
 
     private String code;
 

+ 47 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ChildrenDayDegreeDetailService.java

@@ -1,9 +1,12 @@
 package com.ym.mec.biz.service;
 
 
+import com.ym.mec.biz.dal.dto.DegreePayDto;
 import com.ym.mec.biz.dal.entity.ChildrenDayDegreeDetail;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.common.service.BaseService;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 public interface ChildrenDayDegreeDetailService extends BaseService<Integer, ChildrenDayDegreeDetail> {
@@ -16,4 +19,48 @@ public interface ChildrenDayDegreeDetailService extends BaseService<Integer, Chi
      */
     List<ChildrenDayDegreeDetail> getByUserIdAndStatus(Integer userId, Integer status);
 
+    /**
+     * 增加考级支付详情
+     *
+     * @param degreePayDto
+     * @param gradeFee
+     * @param theoryLevelFee
+     * @param vip1v1Fee
+     * @param vip1v2Fee
+     * @param theoryCourseFee
+     * @return
+     */
+    List<ChildrenDayDegreeDetail> addDegreeDetails(DegreePayDto degreePayDto, BigDecimal gradeFee, BigDecimal theoryLevelFee, BigDecimal vip1v1Fee, BigDecimal vip1v2Fee, BigDecimal theoryCourseFee);
+
+    /**
+     * 增加考级订单详情
+     *
+     * @param degreePayDto
+     * @param gradeFee
+     * @param theoryLevelFee
+     * @param vip1v1Fee
+     * @param vip1v2Fee
+     * @param theoryCourseFee
+     * @return
+     */
+    List<StudentPaymentOrderDetail> addOrderDetails(DegreePayDto degreePayDto, BigDecimal gradeFee, BigDecimal theoryLevelFee, BigDecimal vip1v1Fee, BigDecimal vip1v2Fee, BigDecimal theoryCourseFee);
+
+    /**
+     * 获取用户6.1考级报名详情
+     *
+     * @param userId
+     * @return
+     */
+    List<ChildrenDayDegreeDetail> getUserDegreeInfo(Integer userId);
+
+
+    /**
+     * 更新状态信息
+     *
+     * @param orderId
+     * @param status
+     * @return
+     */
+    Integer updateStatus(Long orderId, Integer status);
+
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ChildrenDayReserveService.java

@@ -4,6 +4,7 @@ package com.ym.mec.biz.service;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.ChildrenDayReserve;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.ChildrenReserveQueryInfo;
 import com.ym.mec.common.page.PageInfo;
@@ -35,6 +36,7 @@ public interface ChildrenDayReserveService extends BaseService<Integer, Children
 
     /**
      * 获取活动的费用信息
+     *
      * @param organId
      * @return
      */
@@ -42,6 +44,7 @@ public interface ChildrenDayReserveService extends BaseService<Integer, Children
 
     /**
      * 获取后台考级活动详情列表
+     *
      * @param queryInfo
      * @return
      */
@@ -54,4 +57,12 @@ public interface ChildrenDayReserveService extends BaseService<Integer, Children
      * @throws Exception
      */
     Map pay(DegreePayDto degreePayDto) throws Exception;
+
+    /**
+     * 支付回调处理
+     *
+     * @param studentPaymentOrder
+     * @return
+     */
+    Boolean orderCallback(StudentPaymentOrder studentPaymentOrder);
 }

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

@@ -389,4 +389,10 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      */
     Integer quitAllStudent(String musicGroupId, String remark);
 
+    /**
+     * 获取乐团在读学员数
+     * @param musicGroupIds
+     * @return
+     */
+    List<Map<String, Integer>> countNormalNum(List<String> musicGroupIds);
 }

+ 123 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ChildrenDayDegreeDetailServiceImpl.java

@@ -1,19 +1,28 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.DegreePayDto;
 import com.ym.mec.biz.dal.entity.ChildrenDayDegreeDetail;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.service.ChildrenDayDegreeDetailService;
 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 org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 @Service
 public class ChildrenDayDegreeDetailServiceImpl extends BaseServiceImpl<Integer, ChildrenDayDegreeDetail> implements ChildrenDayDegreeDetailService {
     @Autowired
     private ChildrenDayDegreeDetailDao childrenDayDegreeDetailDao;
+    @Autowired
+    private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
 
     @Override
     public BaseDAO<Integer, ChildrenDayDegreeDetail> getDAO() {
@@ -21,7 +30,120 @@ public class ChildrenDayDegreeDetailServiceImpl extends BaseServiceImpl<Integer,
     }
 
     @Override
-    public List<ChildrenDayDegreeDetail> getByUserIdAndStatus(Integer userId,Integer status) {
+    public List<ChildrenDayDegreeDetail> getByUserIdAndStatus(Integer userId, Integer status) {
         return childrenDayDegreeDetailDao.getByUserIdAndStatus(userId, status);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public List<ChildrenDayDegreeDetail> addDegreeDetails(DegreePayDto degreePayDto, BigDecimal gradeFee, BigDecimal theoryLevelFee, BigDecimal vip1v1Fee, BigDecimal vip1v2Fee, BigDecimal theoryCourseFee) {
+        List<ChildrenDayDegreeDetail> childrenDayDegreeDetails = new ArrayList<>();
+        if (degreePayDto.getMusicGradeLevel() != null) {
+            ChildrenDayDegreeDetail childrenDayDegreeDetail = new ChildrenDayDegreeDetail();
+            childrenDayDegreeDetail.setReserveId(degreePayDto.getReserveId());
+            childrenDayDegreeDetail.setUserId(degreePayDto.getUserId());
+            childrenDayDegreeDetail.setType(1);
+            childrenDayDegreeDetail.setSubjectId(degreePayDto.getSubject());
+            childrenDayDegreeDetail.setLevel(degreePayDto.getMusicGradeLevel());
+            childrenDayDegreeDetail.setPrice(gradeFee);
+            childrenDayDegreeDetail.setStatus(1);
+            childrenDayDegreeDetail.setOrderId(degreePayDto.getOrderId());
+            childrenDayDegreeDetails.add(childrenDayDegreeDetail);
+        }
+        if (degreePayDto.getTheoryLevel() != null) {
+            ChildrenDayDegreeDetail childrenDayDegreeDetail = new ChildrenDayDegreeDetail();
+            childrenDayDegreeDetail.setReserveId(degreePayDto.getReserveId());
+            childrenDayDegreeDetail.setUserId(degreePayDto.getUserId());
+            childrenDayDegreeDetail.setType(2);
+            childrenDayDegreeDetail.setLevel(degreePayDto.getTheoryLevel());
+            childrenDayDegreeDetail.setPrice(theoryLevelFee);
+            childrenDayDegreeDetail.setStatus(1);
+            childrenDayDegreeDetail.setOrderId(degreePayDto.getOrderId());
+            childrenDayDegreeDetails.add(childrenDayDegreeDetail);
+        }
+        if (degreePayDto.getVip1v1()) {
+            ChildrenDayDegreeDetail childrenDayDegreeDetail = new ChildrenDayDegreeDetail();
+            childrenDayDegreeDetail.setReserveId(degreePayDto.getReserveId());
+            childrenDayDegreeDetail.setUserId(degreePayDto.getUserId());
+            childrenDayDegreeDetail.setType(3);
+            childrenDayDegreeDetail.setPrice(vip1v1Fee);
+            childrenDayDegreeDetail.setStatus(1);
+            childrenDayDegreeDetail.setOrderId(degreePayDto.getOrderId());
+            childrenDayDegreeDetails.add(childrenDayDegreeDetail);
+        }
+        if (degreePayDto.getVip1v2()) {
+            ChildrenDayDegreeDetail childrenDayDegreeDetail = new ChildrenDayDegreeDetail();
+            childrenDayDegreeDetail.setReserveId(degreePayDto.getReserveId());
+            childrenDayDegreeDetail.setUserId(degreePayDto.getUserId());
+            childrenDayDegreeDetail.setType(4);
+            childrenDayDegreeDetail.setPrice(vip1v2Fee);
+            childrenDayDegreeDetail.setStatus(1);
+            childrenDayDegreeDetail.setOrderId(degreePayDto.getOrderId());
+            childrenDayDegreeDetails.add(childrenDayDegreeDetail);
+        }
+        if (degreePayDto.getTheoryCourse()) {
+            ChildrenDayDegreeDetail childrenDayDegreeDetail = new ChildrenDayDegreeDetail();
+            childrenDayDegreeDetail.setReserveId(degreePayDto.getReserveId());
+            childrenDayDegreeDetail.setUserId(degreePayDto.getUserId());
+            childrenDayDegreeDetail.setType(5);
+            childrenDayDegreeDetail.setPrice(theoryCourseFee);
+            childrenDayDegreeDetail.setStatus(1);
+            childrenDayDegreeDetail.setOrderId(degreePayDto.getOrderId());
+            childrenDayDegreeDetails.add(childrenDayDegreeDetail);
+        }
+        childrenDayDegreeDetailDao.batchAdd(childrenDayDegreeDetails);
+        return childrenDayDegreeDetails;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public List<StudentPaymentOrderDetail> addOrderDetails(DegreePayDto degreePayDto, BigDecimal gradeFee, BigDecimal theoryLevelFee, BigDecimal vip1v1Fee, BigDecimal vip1v2Fee, BigDecimal theoryCourseFee) {
+        Date nowDate = new Date();
+        List<StudentPaymentOrderDetail> orderDetails = new ArrayList<>();
+        if (degreePayDto.getMusicGradeLevel() != null || degreePayDto.getTheoryLevel() != null) {
+            StudentPaymentOrderDetail detail = new StudentPaymentOrderDetail();
+            detail.setType(OrderDetailTypeEnum.DEGREE_REGISTRATION);
+            detail.setPrice(gradeFee.add(theoryLevelFee));
+            detail.setRemitFee(BigDecimal.ZERO);
+            detail.setCreateTime(nowDate);
+            detail.setUpdateTime(nowDate);
+            detail.setPaymentOrderId(degreePayDto.getOrderId());
+            detail.setIsRenew(0);
+            orderDetails.add(detail);
+        }
+        if (degreePayDto.getVip1v1() || degreePayDto.getVip1v2()) {
+            StudentPaymentOrderDetail detail = new StudentPaymentOrderDetail();
+            detail.setType(OrderDetailTypeEnum.VIP);
+            detail.setPrice(vip1v1Fee.add(vip1v2Fee));
+            detail.setRemitFee(BigDecimal.ZERO);
+            detail.setCreateTime(nowDate);
+            detail.setUpdateTime(nowDate);
+            detail.setPaymentOrderId(degreePayDto.getOrderId());
+            detail.setIsRenew(0);
+            orderDetails.add(detail);
+        }
+        if (degreePayDto.getTheoryCourse()) {
+            StudentPaymentOrderDetail detail = new StudentPaymentOrderDetail();
+            detail.setType(OrderDetailTypeEnum.THEORY_COURSE);
+            detail.setPrice(theoryCourseFee);
+            detail.setRemitFee(BigDecimal.ZERO);
+            detail.setCreateTime(nowDate);
+            detail.setUpdateTime(nowDate);
+            detail.setPaymentOrderId(degreePayDto.getOrderId());
+            detail.setIsRenew(0);
+            orderDetails.add(detail);
+        }
+        studentPaymentOrderDetailDao.batchAdd(orderDetails);
+        return orderDetails;
+    }
+
+    @Override
+    public List<ChildrenDayDegreeDetail> getUserDegreeInfo(Integer userId) {
+        return childrenDayDegreeDetailDao.getByUserIdAndStatus(userId, 2);
+    }
+
+    @Override
+    public Integer updateStatus(Long orderId, Integer status) {
+        return childrenDayDegreeDetailDao.updateStatus(orderId, status);
+    }
 }

+ 127 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ChildrenDayReserveServiceImpl.java

@@ -12,8 +12,11 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -49,6 +52,18 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
     private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
     @Autowired
     private PayService payService;
+    @Autowired
+    private SysUserCashAccountDetailService sysUserCashAccountDetailService;
+    @Autowired
+    private ContractService contractService;
+    @Autowired
+    private SysUserCashAccountService sysUserCashAccountService;
+    @Autowired
+    private SysMessageService sysMessageService;
+
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+    @Autowired
+    private StudentRegistrationService studentRegistrationService;
 
     @Override
     public BaseDAO<Integer, ChildrenDayReserve> getDAO() {
@@ -104,6 +119,12 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
             dataList = childrenDayReserveDao.queryChildrenStatistics(params);
+            //获取乐团在读人数
+            List<String> musicGroupIds = dataList.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toList());
+            Map<String,Long> normalNum = MapUtil.convertIntegerMap(studentRegistrationService.countNormalNum(musicGroupIds));
+            dataList.forEach(e->{
+                e.setNormalNum(normalNum.get(e.getMusicGroupId())==null?0:normalNum.get(e.getMusicGroupId()).intValue());
+            });
         }
         if (count == 0) {
             dataList = new ArrayList<>();
@@ -203,44 +224,55 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
         ChildrenDayReserve userReserve = this.getUserReserve(degreePayDto.getUserId());
 
         if (userReserve == null) {
-            this.addReserve(degreePayDto.getUser(), YesOrNoEnum.NO);
+            userReserve = this.addReserve(degreePayDto.getUser(), YesOrNoEnum.NO);
         }
+        degreePayDto.setReserveId(userReserve.getId());
 
         //获取课程的价格
         OrganizationDegreeCourseFee courseFee = organizationDegreeCourseFeeDao.getByOrganId(degreePayDto.getOrganId());
+
+        if (courseFee == null) {
+            throw new BizException("刚前分部不参与,谢谢关注");
+        }
+
         List<DegreeLevelFee> degreeLevelFees = degreeLevelFeeDao.getAll();
 
         //订单总金额
         BigDecimal orderAmount = BigDecimal.ZERO;
 
         //器乐考级费用
+        BigDecimal gradeFee = BigDecimal.ZERO;
         if (degreePayDto.getMusicGradeLevel() != null) {
-            BigDecimal gradeFee = degreeLevelFees.stream().filter(e -> e.getLevel().equals(degreePayDto.getMusicGradeLevel())).map(DegreeLevelFee::getGrade).reduce(BigDecimal.ZERO, BigDecimal::add);
+            gradeFee = degreeLevelFees.stream().filter(e -> e.getLevel().equals(degreePayDto.getMusicGradeLevel())).map(DegreeLevelFee::getGrade).reduce(BigDecimal.ZERO, BigDecimal::add);
             orderAmount = orderAmount.add(gradeFee);
         }
 
         //乐理考级费用
+        BigDecimal theoryLevelFee = BigDecimal.ZERO;
         if (degreePayDto.getTheoryLevel() != null) {
-            BigDecimal theoryLevelFee = degreeLevelFees.stream().filter(e -> e.getLevel().equals(degreePayDto.getTheoryLevel())).map(DegreeLevelFee::getTheory).reduce(BigDecimal.ZERO, BigDecimal::add);
+            theoryLevelFee = degreeLevelFees.stream().filter(e -> e.getLevel().equals(degreePayDto.getTheoryLevel())).map(DegreeLevelFee::getTheory).reduce(BigDecimal.ZERO, BigDecimal::add);
             orderAmount = orderAmount.add(theoryLevelFee);
         }
 
         //VIP 1v1 1v2费用
+        BigDecimal vip1v1Fee = BigDecimal.ZERO;
         if (degreePayDto.getVip1v1()) {
-            BigDecimal vip1v1Fee = courseFee.getVip1v1();
+            vip1v1Fee = courseFee.getVip1v1();
             orderAmount = orderAmount.add(vip1v1Fee);
         }
 
         //VIP 1v2费用
+        BigDecimal vip1v2Fee = BigDecimal.ZERO;
         if (degreePayDto.getVip1v2()) {
-            BigDecimal vip1v2Fee = courseFee.getVip1v2();
+            vip1v2Fee = courseFee.getVip1v2();
             orderAmount = orderAmount.add(vip1v2Fee);
         }
 
-        //VIP 乐理课费用
+        //乐理课费用
+        BigDecimal theoryCourseFee = BigDecimal.ZERO;
         if (degreePayDto.getTheoryCourse()) {
-            BigDecimal theoryFee = courseFee.getTheory();
-            orderAmount = orderAmount.add(theoryFee);
+            theoryCourseFee = courseFee.getTheory();
+            orderAmount = orderAmount.add(theoryCourseFee);
         }
 
         if (orderAmount.compareTo(degreePayDto.getAmount()) != 0) {
@@ -273,6 +305,11 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
         studentPaymentOrder.setUpdateTime(nowDate);
         studentPaymentOrderService.insert(studentPaymentOrder);
 
+        //添加购买详情
+        degreePayDto.setOrderId(studentPaymentOrder.getId());
+        childrenDayDegreeDetailService.addOrderDetails(degreePayDto, gradeFee, theoryLevelFee, vip1v1Fee, vip1v2Fee, theoryCourseFee);
+        childrenDayDegreeDetailService.addDegreeDetails(degreePayDto, gradeFee, theoryLevelFee, vip1v1Fee, vip1v2Fee, theoryCourseFee);
+
         studentPaymentOrder.setVersion(0);
         if (orderAmount.compareTo(BigDecimal.ZERO) == 0) {
             studentPaymentRouteOrderService.addRouteOrder(orderNo, degreePayDto.getOrganId(), balance);
@@ -309,4 +346,86 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
         studentPaymentOrderService.update(studentPaymentOrder);
         return payMap;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean orderCallback(StudentPaymentOrder studentPaymentOrder) {
+        Date nowDate = new Date();
+        //更新订单信息
+        studentPaymentOrder.setUpdateTime(nowDate);
+        int updateCount = studentPaymentOrderService.update(studentPaymentOrder);
+        if (updateCount <= 0) {
+            throw new BizException("订单更新失败");
+        }
+
+        Integer userId = studentPaymentOrder.getUserId();
+
+        Map<Integer, String> map = new HashMap<>();
+        map.put(userId, userId.toString());
+
+        //支付成功
+        if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
+            if (childrenDayDegreeDetailService.updateStatus(studentPaymentOrder.getId(), 2) <= 0) {
+                throw new BizException("购买详情,更新失败");
+            }
+
+
+            //插入交易明细
+            BigDecimal amount = studentPaymentOrder.getActualAmount();
+            if (amount.compareTo(BigDecimal.ZERO) > 0) {
+                SysUserCashAccount cashAccount = sysUserCashAccountService.get(userId);
+                //充值
+                SysUserCashAccountDetail rechargeDetail = new SysUserCashAccountDetail();
+                rechargeDetail.setAmount(amount);
+                rechargeDetail.setBalance(cashAccount.getBalance().add(amount));
+                rechargeDetail.setComment("缴费前充值");
+                rechargeDetail.setCreateTime(nowDate);
+                rechargeDetail.setStatus(DealStatusEnum.SUCCESS);
+                rechargeDetail.setTransNo(studentPaymentOrder.getTransNo());
+                rechargeDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
+                rechargeDetail.setUpdateTime(nowDate);
+                rechargeDetail.setUserId(userId);
+                rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
+                rechargeDetail.setComAmount(studentPaymentOrder.getComAmount());
+                rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount());
+                sysUserCashAccountDetailService.insert(rechargeDetail);
+
+                //缴费
+                SysUserCashAccountDetail paymentDetail = new SysUserCashAccountDetail();
+                paymentDetail.setAmount(amount.negate());
+                paymentDetail.setBalance(cashAccount.getBalance());
+                paymentDetail.setComment("6.1考级活动");
+                paymentDetail.setCreateTime(nowDate);
+                paymentDetail.setStatus(DealStatusEnum.SUCCESS);
+                paymentDetail.setTransNo(studentPaymentOrder.getTransNo());
+                paymentDetail.setType(PlatformCashAccountDetailTypeEnum.PAY_FEE);
+                paymentDetail.setUpdateTime(nowDate);
+                paymentDetail.setUserId(userId);
+                rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
+                sysUserCashAccountDetailService.insert(paymentDetail);
+            }
+
+            try {
+                contractService.transferProduceContract(userId, null);
+            } catch (Exception e) {
+                logger.error("产品协议生成失败", e);
+            }
+            return true;
+        }
+
+        if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
+            if (childrenDayDegreeDetailService.updateStatus(studentPaymentOrder.getId(), 3) <= 0) {
+                throw new BizException("购买详情,更新失败");
+            }
+
+            if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+                sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "6.1考级支付失败");
+            }
+
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_SPORADIC_PAYMENT_FAILED, map, null, 0, null, "STUDENT",
+                    studentPaymentOrder.getActualAmount(), "6.1考级活动");
+            return false;
+        }
+        return true;
+    }
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java

@@ -722,6 +722,9 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 		if(statusCoursesMap.containsKey(CourseStatusEnum.NOT_START)){
 			List<CourseScheduleStudentPaymentDto> notStartCourses = statusCoursesMap.get(CourseStatusEnum.NOT_START);
 			for (CourseScheduleStudentPaymentDto notStartCourse : notStartCourses) {
+				if(Objects.isNull(notStartCourse.getActualPrice())){
+					continue;
+				}
 				studentRegistrationService.updateUserSurplusCourseFee(notStartCourse.getUserId(), notStartCourse.getMusicGroupId(), notStartCourse.getActualPrice(), StringUtils.join("课程状态变更到未开始,退还缴费:", notStartCourse.getCourseScheduleId()), null);
 				notStartCourse.setActualPrice(BigDecimal.ZERO);
 				needUpdates.add(notStartCourse);

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -10,6 +10,7 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.dto.*;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -68,6 +69,8 @@ import com.ym.mec.util.date.DateUtil;
 @Service
 public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentAttendance> implements StudentAttendanceService {
 
+    private final Logger LOGGER = LoggerFactory.getLogger(StudentAttendanceServiceImpl.class);
+
     @Autowired
     private StudentAttendanceDao studentAttendanceDao;
     @Autowired
@@ -113,6 +116,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
     @Override
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public Map<String, Object> addStudentAttendances(StudentAttendanceDto studentAttendanceInfos) {
+        LOGGER.info(JSON.toJSONString(studentAttendanceInfos));
         List<StudentAttendance> studentAttendances = studentAttendanceInfos.getStudentAttendances();
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (Objects.isNull(sysUser)) {

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -90,6 +90,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     private StudentInstrumentService studentInstrumentService;
     @Autowired
     private ReplacementInstrumentActivityService replacementInstrumentActivityService;
+    @Autowired
+    private ChildrenDayReserveService childrenDayReserveService;
 
     @Override
     public BaseDAO<Long, StudentPaymentOrder> getDAO() {
@@ -374,6 +376,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             studentInstrumentService.orderCallback(order);
         } else if (order.getType().equals(OrderTypeEnum.REPLACEMENT)) {
             replacementInstrumentActivityService.orderCallback(order);
+        }else if (order.getType().equals(OrderTypeEnum.DEGREE)) {
+            childrenDayReserveService.orderCallback(order);
         }
     }
 

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1810,4 +1810,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     public Integer quitAllStudent(String musicGroupId, String remark) {
         return studentRegistrationDao.quitAllStudent(musicGroupId, remark);
     }
+
+    @Override
+    public List<Map<String, Integer>> countNormalNum(List<String> musicGroupIds) {
+        return studentRegistrationDao.countNormalNum(StringUtils.join(musicGroupIds,","));
+    }
 }

+ 18 - 0
mec-biz/src/main/resources/config/mybatis/ChildrenDayDegreeDetailDao.xml

@@ -79,4 +79,22 @@
         WHERE user_id_ = #{userId}
           AND status_ = #{status}
     </select>
+
+    <insert id="batchAdd" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
+        INSERT INTO children_day_degree_detail
+        (reserve_id_, user_id_, type_, subject_id_, level_, price_,status_,order_id_,create_time_,update_time)
+        VALUE
+        <foreach collection="details" item="detail" separator=",">
+            (#{detail.reserveId}, #{detail.userId}, #{detail.type}, #{detail.subjectId}, #{detail.level},
+            #{detail.price}, #{detail.status},#{detail.orderId},
+            now(),now())
+        </foreach>
+    </insert>
+
+    <update id="updateStatus">
+        UPDATE children_day_degree_detail
+        SET status_=#{status},
+            update_time = NOW()
+        WHERE order_id_ = #{orderId}
+    </update>
 </mapper>

+ 106 - 0
mec-biz/src/main/resources/config/mybatis/ChildrenDayDegreeInfoDao.xml

@@ -0,0 +1,106 @@
+<?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.ChildrenDayDegreeInfoDao">
+    <resultMap id="ChildrenDayDegreeInfo" type="com.ym.mec.biz.dal.entity.ChildrenDayDegreeInfo">
+        <!--@mbg.generated-->
+        <!--@Table children_day_degree_info-->
+        <id column="id_" property="id"/>
+        <result column="reserve_id_" property="reserveId"/>
+        <result column="user_id_" property="userId"/>
+        <result column="subject_id_" property="subjectId"/>
+        <result column="grade_level_" property="gradeLevel"/>
+        <result column="grade_price_" property="gradePrice"/>
+        <result column="theory_level_" property="theoryLevel"/>
+        <result column="theory_price_" property="theoryPrice"/>
+        <result column="vip_1v1_price_" property="vip1v1Price"/>
+        <result column="vip_1v2_price_" property="vip1v2Price"/>
+        <result column="theory_course_price_" property="theoryCoursePrice"/>
+        <result column="total_amount_" property="totalAmount"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+    </resultMap>
+
+    <select id="get" parameterType="java.lang.Integer" resultMap="ChildrenDayDegreeInfo">
+        <!--@mbg.generated-->
+        select *
+        from children_day_degree_info
+        where id_ = #{id}
+    </select>
+
+    <delete id="delete" parameterType="java.lang.Integer">
+        <!--@mbg.generated-->
+        delete from children_day_degree_info
+        where id_ = #{id}
+    </delete>
+
+    <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.ChildrenDayDegreeInfo"
+            useGeneratedKeys="true">
+        <!--@mbg.generated-->
+        insert into children_day_degree_info (reserve_id_, user_id_, subject_id_, grade_level_, grade_price_,
+        theory_level_,
+        theory_price_, vip_1v1_price_, vip_1v2_price_, theory_course_price_, total_amount_,
+        create_time_, update_time_)
+        values (#{reserveId}, #{userId}, #{subjectId}, #{gradeLevel}, #{gradePrice}, #{theoryLevel},
+        #{theoryPrice}, #{vip1v1Price}, #{vip1v2Price}, #{theoryCoursePrice}, #{totalAmount},
+        NOW(), NOW())
+    </insert>
+
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.ChildrenDayDegreeInfo">
+        <!--@mbg.generated-->
+        update children_day_degree_info
+        <set>
+            <if test="reserveId != null">
+                reserve_id_ = #{reserveId},
+            </if>
+            <if test="userId != null">
+                user_id_ = #{userId},
+            </if>
+            <if test="subjectId != null">
+                subject_id_ = #{subjectId},
+            </if>
+            <if test="gradeLevel != null">
+                grade_level_ = #{gradeLevel},
+            </if>
+            <if test="gradePrice != null">
+                grade_price_ = #{gradePrice},
+            </if>
+            <if test="theoryLevel != null">
+                theory_level_ = #{theoryLevel},
+            </if>
+            <if test="theoryPrice != null">
+                theory_price_ = #{theoryPrice},
+            </if>
+            <if test="vip1v1Price != null">
+                vip_1v1_price_ = #{vip1v1Price},
+            </if>
+            <if test="vip1v2Price != null">
+                vip_1v2_price_ = #{vip1v2Price},
+            </if>
+            <if test="theoryCoursePrice != null">
+                theory_course_price_ = #{theoryCoursePrice},
+            </if>
+            <if test="totalAmount != null">
+                total_amount_ = #{totalAmount},
+            </if>
+            <if test="createTime != null">
+                create_time_ = #{createTime},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = NOW(),
+            </if>
+        </set>
+        where id_ = #{id}
+    </update>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="ChildrenDayDegreeInfo" parameterType="map">
+        SELECT * FROM children_day_degree_info
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*)
+        FROM children_day_degree_info
+    </select>
+</mapper>

+ 18 - 6
mec-biz/src/main/resources/config/mybatis/ChildrenDayReserveMapper.xml

@@ -75,8 +75,11 @@
     <resultMap id="ChildrenStatisticsDtoMap" type="com.ym.mec.biz.dal.dto.ChildrenStatisticsDto">
         <result property="buyMusicTheoryAmount" column="buy_music_theory_amount_"/>
         <result property="buyMusicTheoryNum" column="buy_music_theory_num_"/>
-        <result property="buyVipAmount" column="buy_vip_amount_"/>
-        <result property="buyVipNum" column="buy_vip_num_"/>
+        <result property="buyVip1Amount" column="buy_vip1_amount_"/>
+        <result property="buyVip1Num" column="buy_vip1_num_"/>
+        <result property="buyVip2Amount" column="buy_vip2_amount_"/>
+        <result property="buyVip2Num" column="buy_vip2_num_"/>
+        <result property="totalAmount" column="total_amount_"/>
         <result property="cooperationOrganName" column="cooperation_organ_name_"/>
         <result property="instrumentalMusicNum" column="instrumental_music_num_"/>
         <result property="musicGroupName" column="music_group_name_"/>
@@ -90,13 +93,22 @@
         <result property="musicGroupId" column="music_group_id_"/>
     </resultMap>
     <select id="queryChildrenStatistics" resultMap="ChildrenStatisticsDtoMap">
-        SELECT o.name_ organ_name_,co.name_ cooperation_organ_name_,mg.name_ music_group_name_,COUNT(sr.user_id_) normal_num_,cdr.organ_id_,
+        SELECT o.name_ organ_name_,co.name_ cooperation_organ_name_,mg.name_ music_group_name_,cdr.organ_id_,
         cdr.cooperation_organ_id_,cdr.music_group_id_,
-        COUNT(DISTINCT CASE WHEN cdr.is_reserve_ = 1 THEN 1 ELSE NULL END) 'reserve_num_',
-        COUNT(DISTINCT CASE WHEN cdr.is_reserve_ = 0 THEN 1 ELSE NULL END) 'no_reserve_num_'
+        COUNT(CASE WHEN cdr.is_reserve_ = 1 THEN 1 ELSE NULL END) 'reserve_num_',
+        COUNT(CASE WHEN cdr.is_reserve_ = 0 THEN 1 ELSE NULL END) 'no_reserve_num_',
+        COUNT(CASE WHEN cdd.grade_price_ > 0 THEN 1 ELSE NULL END) 'instrumental_music_num_',
+        COUNT(CASE WHEN cdd.theory_price_ > 0 THEN 1 ELSE NULL END) 'music_theory_num_',
+        COUNT(CASE WHEN cdd.vip_1v1_price_ > 0 THEN 1 ELSE NULL END) 'buy_vip1_num_',
+        SUM(cdd.vip_1v1_price_) 'buy_vip1_amount_',
+        COUNT(CASE WHEN cdd.vip_1v2_price_ > 0 THEN 1 ELSE NULL END) 'buy_vip2_num_',
+        SUM(cdd.vip_1v2_price_) 'buy_vip2_amount_',
+        COUNT(CASE WHEN cdd.theory_course_price_ > 0 THEN 1 ELSE NULL END) 'buy_music_theory_num_',
+        SUM(cdd.theory_course_price_) 'buy_music_theory_amount_',
+        SUM(cdd.total_amount_) 'total_amount_'
         FROM children_day_reserve cdr
+        LEFT JOIN children_day_degree_info cdd ON cdr.id_ = cdd.reserve_id_
         LEFT JOIN music_group mg ON mg.id_ = cdr.music_group_id_
-        LEFT JOIN student_registration sr ON sr.music_group_id_ = cdr.music_group_id_ AND sr.music_group_status_ = 'NORMAL' AND cdr.user_id_ = sr.user_id_
         LEFT JOIN cooperation_organ co ON co.id_ = cdr.cooperation_organ_id_
         LEFT JOIN organization o ON o.id_ = cdr.organ_id_
         <include refid="queryChildrenStatisticsSql"/>

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

@@ -256,10 +256,10 @@
                 AND FIND_IN_SET(su.organ_id_,#{queryInfo.organId})
             </if>
             <if test="queryInfo.startTime != null and queryInfo.startTime != ''">
-                AND cad.create_time_ >= #{queryInfo.startTime}
+                AAND DATE_FORMAT(cad.create_time_,'%Y-%m-%d') >= #{queryInfo.startTime}
             </if>
             <if test="queryInfo.endTime != null and queryInfo.startTime != ''">
-                AND cad.create_time_ &lt;= #{queryInfo.endTime}
+                AND DATE_FORMAT(cad.create_time_,'%Y-%m-%d') &lt;= #{queryInfo.endTime}
             </if>
         </where>
         GROUP BY cad.id_

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

@@ -129,10 +129,10 @@
 				AND FIND_IN_SET(su.organ_id_,#{queryInfo.organId})
 			</if>
 			<if test="queryInfo.startTime != null and queryInfo.startTime != ''">
-				AND cad.create_time_ >= #{queryInfo.startTime}
+				AND DATE_FORMAT(cad.create_time_,'%Y-%m-%d') >= #{queryInfo.startTime}
 			</if>
 			<if test="queryInfo.endTime != null and queryInfo.startTime != ''">
-				AND cad.create_time_ &lt;= #{queryInfo.endTime}
+				AND DATE_FORMAT(cad.create_time_,'%Y-%m-%d') &lt;= #{queryInfo.endTime}
 			</if>
 		</where>
 		GROUP BY cad.id_

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

@@ -0,0 +1,51 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.StudentDao;
+import com.ym.mec.biz.dal.dto.ChildrenDayDetailDto;
+import com.ym.mec.biz.dal.dto.DegreeFeeDto;
+import com.ym.mec.biz.dal.dto.DegreePayDto;
+import com.ym.mec.biz.dal.entity.ChildrenDayDegreeDetail;
+import com.ym.mec.biz.dal.entity.ChildrenDayReserve;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.service.ChildrenDayDegreeDetailService;
+import com.ym.mec.biz.service.ChildrenDayReserveService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+@RequestMapping("childrenDayDegreeDetail")
+@Api(tags = "6.1儿童节活动报名详情")
+@RestController
+public class ChildrenDayDegreeDetailController extends BaseController {
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private ChildrenDayDegreeDetailService childrenDayDegreeDetailService;
+
+
+    @ApiOperation(value = "获取用户已报名的详情,类型 1-乐器考级 2-乐理考级 3-vip1v1,4-vip1v2 5-乐理课")
+    @GetMapping("/getUserDegreeInfo")
+    public HttpResponseResult<ChildrenDayDetailDto> getFeeInfo() {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (Objects.isNull(user)) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        List<ChildrenDayDegreeDetail> userDegreeInfo = childrenDayDegreeDetailService.getUserDegreeInfo(user.getId());
+        ChildrenDayDetailDto childrenDayDetailDto = new ChildrenDayDetailDto();
+        childrenDayDetailDto.setUser(user);
+        childrenDayDetailDto.setChildrenDayDegreeDetails(userDegreeInfo);
+        return succeed(childrenDayDetailDto);
+    }
+
+}