瀏覽代碼

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

zouxuan 4 年之前
父節點
當前提交
90fb838603

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

@@ -36,6 +36,9 @@ public class MusicGroupSubjectGoodsAndInfoDto {
     @ApiModelProperty(value = "乐团云教练价格",required = false)
     private BigDecimal cloudTeacherFee;
 
+    @ApiModelProperty(value = "乐团云教练+价格",required = false)
+    private BigDecimal cloudTeacherPlusFee;
+
     public Map getCourseScheduleInfo() {
         return CourseScheduleInfo;
     }
@@ -99,4 +102,12 @@ public class MusicGroupSubjectGoodsAndInfoDto {
     public void setCloudTeacherFee(BigDecimal cloudTeacherFee) {
         this.cloudTeacherFee = cloudTeacherFee;
     }
+
+    public BigDecimal getCloudTeacherPlusFee() {
+        return cloudTeacherPlusFee;
+    }
+
+    public void setCloudTeacherPlusFee(BigDecimal cloudTeacherPlusFee) {
+        this.cloudTeacherPlusFee = cloudTeacherPlusFee;
+    }
 }

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

@@ -38,6 +38,9 @@ public class RegisterPayDto {
     @ApiModelProperty(value = "购买云教练",required = false)
     private Boolean buyCloudTeacher= false;
 
+    @ApiModelProperty(value = "购买云教练+",required = false)
+    private Boolean buyCloudTeacherPlus= false;
+
     public Integer getRegisterId() {
         return registerId;
     }
@@ -125,4 +128,12 @@ public class RegisterPayDto {
     public void setBuyCloudTeacher(Boolean buyCloudTeacher) {
         this.buyCloudTeacher = buyCloudTeacher;
     }
+
+    public Boolean getBuyCloudTeacherPlus() {
+        return buyCloudTeacherPlus;
+    }
+
+    public void setBuyCloudTeacherPlus(Boolean buyCloudTeacherPlus) {
+        this.buyCloudTeacherPlus = buyCloudTeacherPlus;
+    }
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/OrganizationCloudTeacherFee.java

@@ -16,6 +16,9 @@ public class OrganizationCloudTeacherFee {
     @ApiModelProperty(value = "云教练价格")
     private BigDecimal price;
 
+    @ApiModelProperty(value = "云教练+价格")
+    private BigDecimal plusPrice;
+
     private Date createTime;
 
     private Date updateTime;
@@ -39,6 +42,14 @@ public class OrganizationCloudTeacherFee {
         this.price = price;
     }
 
+    public BigDecimal getPlusPrice() {
+        return plusPrice;
+    }
+
+    public void setPlusPrice(BigDecimal plusPrice) {
+        this.plusPrice = plusPrice;
+    }
+
     public Date getCreateTime() {
         return createTime;
     }

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

@@ -5,7 +5,8 @@ import com.ym.mec.common.enums.BaseEnum;
 public enum CourseViewTypeEnum implements BaseEnum<Integer, CourseViewTypeEnum> {
     COURSE_lIST(0, "课程详情"),
     AMR(1, "器乐练习系统"),
-    CLOUD_TEACHER(2, "云教练收费");
+    CLOUD_TEACHER(2, "云教练收费"),
+    CLOUD_TEACHER_PLUS(3, "云教练+收费");
 
     private Integer code;
 

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

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

+ 3 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -95,12 +95,13 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      * @param newCourses
      * @param buyMaintenance
      * @param buyCloudTeacher
+     * @param buyCloudTeacherPlus
      * @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, Boolean buyCloudTeacher) throws Exception;
+                                 List<MusicGroupPaymentCalenderCourseSettings> newCourses, Boolean buyMaintenance, Boolean buyCloudTeacher, Boolean buyCloudTeacherPlus) throws Exception;
 
     /**
      * 学生注册缴费重新下订单
@@ -326,7 +327,7 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      * @return boolean
      */
     BigDecimal updateUserSurplusCourseFee(Integer userId, String musicGroupId, BigDecimal amount, String memo, Integer operatorId);
-    
+
     /**
      * 查询指定学生的乐团信息
      * @param userId

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -38,6 +38,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     public Boolean addOrderDetail2CloudTeacher(StudentPaymentOrder order) {
         List<OrderDetailTypeEnum> orderDetailTypes = new ArrayList<>();
         orderDetailTypes.add(OrderDetailTypeEnum.CLOUD_TEACHER);
+        orderDetailTypes.add(OrderDetailTypeEnum.CLOUD_TEACHER_PLUS);
         List<StudentPaymentOrderDetail> orderDetails = studentPaymentOrderDetailDao.getOrderDetailByType(order.getId(), orderDetailTypes);
         if (orderDetails.size() <= 0) {
             return true;
@@ -47,7 +48,8 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         cloudTeacherOrder.setOrganId(order.getOrganId());
         cloudTeacherOrder.setStudentId(order.getUserId());
         cloudTeacherOrder.setType(2);
-        cloudTeacherOrder.setLevel(3);
+        int level = orderDetail.getType().equals(OrderDetailTypeEnum.CLOUD_TEACHER) ? 3 : 4;
+        cloudTeacherOrder.setLevel(level);
         cloudTeacherOrder.setTime(6);
         cloudTeacherOrder.setAmount(orderDetail.getPrice());
         cloudTeacherOrder.setStatus(1);

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

@@ -679,12 +679,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             orderAmount = orderAmount.add(maintenancePrice);
         }
 
-        //云教练
         MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
         studentRegistration.setOrganId(musicGroup.getOrganId());
-        if (registerPayDto.getBuyCloudTeacher()) {
+        //云教练/云教练+
+        if (registerPayDto.getBuyCloudTeacher() || registerPayDto.getBuyCloudTeacherPlus()) {
             OrganizationCloudTeacherFee cloudTeacher = organizationCloudTeacherFeeDao.getByOrganId(studentRegistration.getOrganId());
-            BigDecimal cloudTeacherPrice = cloudTeacher.getPrice();
+            BigDecimal cloudTeacherPrice = registerPayDto.getBuyCloudTeacher() ? cloudTeacher.getPrice() : cloudTeacher.getPlusPrice();
             orderAmount = orderAmount.add(cloudTeacherPrice);
         }
 
@@ -699,7 +699,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(), registerPayDto.getBuyCloudTeacher());
+        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.addOrder(studentRegistration, amount, orderNo, channelType, courseFee, goodsGroups, remitFee, courseRemitFee, newCourses, registerPayDto.getBuyMaintenance(), registerPayDto.getBuyCloudTeacher(),registerPayDto.getBuyCloudTeacherPlus());
         studentPaymentOrder = studentPaymentOrderService.get(studentPaymentOrder.getId());
 
         Date date = new Date();
@@ -851,10 +851,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
         studentRegistration.setOrganId(musicGroup.getOrganId());
-        //云教练
-        if (registerPayDto.getBuyCloudTeacher()) {
+        //云教练/云教练+
+        if (registerPayDto.getBuyCloudTeacher() || registerPayDto.getBuyCloudTeacherPlus()) {
             OrganizationCloudTeacherFee cloudTeacher = organizationCloudTeacherFeeDao.getByOrganId(studentRegistration.getOrganId());
-            BigDecimal cloudTeacherPrice = cloudTeacher.getPrice();
+            BigDecimal cloudTeacherPrice = registerPayDto.getBuyCloudTeacher() ? cloudTeacher.getPrice() : cloudTeacher.getPlusPrice();
             orderAmount = orderAmount.add(cloudTeacherPrice);
         }
 
@@ -870,7 +870,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(), registerPayDto.getBuyCloudTeacher());
+        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.addOrder(studentRegistration, amount, orderNo, channelType, courseFee, goodsGroups, remitFee, courseRemitFee, newCourses, registerPayDto.getBuyMaintenance(), registerPayDto.getBuyCloudTeacher(), registerPayDto.getBuyCloudTeacherPlus());
         studentPaymentOrder = studentPaymentOrderService.get(studentPaymentOrder.getId());
         Date date = new Date();
 

+ 6 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java

@@ -127,9 +127,10 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
         musicGroupSubjectGoodsAndInfo.setMusicGroupPaymentCalender(musicGroupRegCalender);
         musicGroupSubjectGoodsAndInfo.setMusicGroupSubjectGoodsGroupList(goodsGroups);
         musicGroupSubjectGoodsAndInfo.setMusicGroup(musicGroup);
-        if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER)) {
+        if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) || musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER_PLUS)) {
             OrganizationCloudTeacherFee cloudTeacherFee = organizationCloudTeacherFeeDao.getByOrganId(musicGroup.getOrganId());
             musicGroupSubjectGoodsAndInfo.setCloudTeacherFee(cloudTeacherFee.getPrice());
+            musicGroupSubjectGoodsAndInfo.setCloudTeacherPlusFee(cloudTeacherFee.getPlusPrice());
         }
         return musicGroupSubjectGoodsAndInfo;
     }
@@ -237,12 +238,13 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
     }
 
     @Override
-    public List<MusicGroupGoodsAndDiscountDto> getSubjectGoods(Integer subjectId, String type, Integer chargeTypeId,Integer courseViewType,String musicGroupId) {
-        if(StringUtils.isNotEmpty(musicGroupId)){
+    public List<MusicGroupGoodsAndDiscountDto> getSubjectGoods(Integer subjectId, String type, Integer chargeTypeId, Integer courseViewType, String musicGroupId) {
+        if (StringUtils.isNotEmpty(musicGroupId)) {
             MusicGroup musicGroup = musicGroupService.get(musicGroupId);
             courseViewType = musicGroup.getCourseViewType().getCode();
+            courseViewType = courseViewType == 3?2:courseViewType;
         }
-        List<MusicGroupGoodsAndDiscountDto> goodsList = goodsDao.getMusicGroupGoodsAndDiscount(subjectId, type,courseViewType);
+        List<MusicGroupGoodsAndDiscountDto> goodsList = goodsDao.getMusicGroupGoodsAndDiscount(subjectId, type, courseViewType);
         if (chargeTypeId == null || (type != null && !"INSTRUMENT".equals(type))) {
             return goodsList;
         }

+ 12 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -25,7 +25,6 @@ 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.controller.BaseController;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -390,7 +389,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, Boolean buyCloudTeacher) throws Exception {
+                                        BigDecimal courseFee, List<MusicGroupSubjectGoodsGroup> goodsGroups, BigDecimal remitFee, BigDecimal courseRemitFee, List<MusicGroupPaymentCalenderCourseSettings> newCourses, Boolean buyMaintenance, Boolean buyCloudTeacher, Boolean buyCloudTeacherPlus) throws Exception {
         Date date = new Date();
         StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
         studentPaymentOrder.setUserId(studentRegistration.getUserId());
@@ -476,12 +475,13 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             maintenanceOrderDetail.setIsRenew(0);
             studentPaymentOrderDetailList.add(maintenanceOrderDetail);
         }
-        //云教练
-        if (buyCloudTeacher) {
+        //云教练/云教练+
+        if (buyCloudTeacher || buyCloudTeacherPlus) {
             OrganizationCloudTeacherFee cloudTeacher = organizationCloudTeacherFeeDao.getByOrganId(studentRegistration.getOrganId());
-            BigDecimal cloudTeacherPrice = cloudTeacher.getPrice();
+            BigDecimal cloudTeacherPrice = buyCloudTeacher ? cloudTeacher.getPrice() : cloudTeacher.getPlusPrice();
+            OrderDetailTypeEnum orderDetailTypeEnum = buyCloudTeacher ? OrderDetailTypeEnum.CLOUD_TEACHER : OrderDetailTypeEnum.CLOUD_TEACHER_PLUS;
             StudentPaymentOrderDetail cloudTeacherOrderDetail = new StudentPaymentOrderDetail();
-            cloudTeacherOrderDetail.setType(OrderDetailTypeEnum.CLOUD_TEACHER);
+            cloudTeacherOrderDetail.setType(orderDetailTypeEnum);
             cloudTeacherOrderDetail.setPrice(cloudTeacherPrice);
             cloudTeacherOrderDetail.setRemitFee(BigDecimal.ZERO);
             cloudTeacherOrderDetail.setCreateTime(date);
@@ -494,14 +494,16 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
         MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
 
-        //增加缴费学生数,0元订单不增加报名人数(没买云教练的)
+        //增加缴费学生数,0元订单不增加报名人数(没买云教练/云教练+的)
         boolean paidZeroFlag = false;
         boolean firstPaidZeroFlag = false;
 
         MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
         int paidNum = musicOneSubjectClassPlan.getPaidStudentNum() == null ? 0 : musicOneSubjectClassPlan.getPaidStudentNum();
         int paidZeroNum = musicOneSubjectClassPlan.getPaidZeroNum() == null ? 0 : musicOneSubjectClassPlan.getPaidZeroNum();
-        if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) && !buyCloudTeacher) {
+        if ((musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) && !buyCloudTeacher) ||
+                (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER_PLUS) && !buyCloudTeacherPlus)
+        ) {
             paidZeroFlag = true;
             if (paidZeroNum <= 0) {
                 musicOneSubjectClassPlan.setPaidZeroNum(paidZeroNum + 1);
@@ -1090,6 +1092,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                     .filter(o -> !o.getType().getCode().equals("ACCESSORIES"))
                     .filter(o -> !o.getType().getCode().equals("MAINTENANCE"))
                     .filter(o -> !o.getType().getCode().equals("CLOUD_TEACHER"))
+                    .filter(o -> !o.getType().getCode().equals("CLOUD_TEACHER_PLUS"))
                     .map(o -> o.getPrice().subtract(o.getRemitFee() == null ? BigDecimal.ZERO : o.getRemitFee()))
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
 
@@ -1206,7 +1209,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         if (studentPaymentOrder.getStatus().equals(DealStatusEnum.FAILED)) {
             MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
             //减去缴费人数(器乐收费,0元时不减缴费人数)
-            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER)) {
+            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) || musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER_PLUS)) {
                 if (studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("200")) {
                     musicOneSubjectClassPlan.setPaidZeroNum(musicOneSubjectClassPlan.getPaidZeroNum() - 1);
                     musicOneSubjectClassPlan.setPaidStudentNum(musicOneSubjectClassPlan.getPaidStudentNum() - 1);

+ 7 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java

@@ -70,6 +70,8 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
     private GoodsService goodsService;
     @Autowired
     private StudentInstrumentService studentInstrumentService;
+    @Autowired
+    private MusicGroupPurchaseListDao musicGroupPurchaseListDao;
 
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
@@ -121,8 +123,10 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
             throw new BizException("声部更改已缴费,请勿重复缴费");
         }
 
-        MusicGroup musicGroup = musicGroupDao.get(subjectChange.getMusicGroupId());
-        if (!musicGroup.getStatus().equals(MusicGroupStatusEnum.APPLY) && !musicGroup.getStatus().equals(MusicGroupStatusEnum.PAY)) {
+        HashSet<String> musicGroupIds = new HashSet<>();
+        musicGroupIds.add(subjectChange.getMusicGroupId());
+        List<MusicGroupPurchaseList> musicGroupPurchaseListCount = musicGroupPurchaseListDao.getCount(musicGroupIds);
+        if (musicGroupPurchaseListCount.size() > 0) {
             throw new BizException("乐团当前状态不能缴声部更改费用");
         }
         BigDecimal amount = subjectChange.getGoodsMargin().add(subjectChange.getCourseMargin());
@@ -249,7 +253,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         }
         if (StringUtils.isNotBlank(subjectChange.getChangeAccessories())) {
             goodsIds += StringUtils.isNotBlank(goodsIds) ? "," + subjectChange.getChangeAccessories() : subjectChange.getChangeAccessories();
-        }else {
+        } else {
             subjectChange.setChangeAccessories(null);
         }
         BigDecimal goodsPrice = BigDecimal.ZERO;

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

@@ -7,6 +7,7 @@
         <id column="id_" property="id"/>
         <result column="organ_id_" property="organId"/>
         <result column="price_" property="price"/>
+        <result column="plus_price_" property="plusPrice"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
         <result column="organName" property="organName"/>
@@ -30,8 +31,8 @@
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.OrganizationCloudTeacherFee"
             useGeneratedKeys="true" keyColumn="id_" keyProperty="id">
         INSERT INTO organization_cloud_teacher_fee
-            (organ_id_, price_, create_time_, update_time_)
-        VALUES (#{organId}, #{price}, NOW(), NOW())
+            (organ_id_, price_,plus_price_, create_time_, update_time_)
+        VALUES (#{organId}, #{price},#{plusPrice}, NOW(), NOW())
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -41,6 +42,9 @@
             <if test="price != null">
                 price_ = #{price},
             </if>
+            <if test="plusPrice != null">
+                plus_price_ = #{plusPrice},
+            </if>
             update_time_=NOW()
         </set>
         WHERE id_ = #{id}