ソースを参照

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

zouxuan 4 年 前
コミット
b55fe84608

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

@@ -347,9 +347,12 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 获取老师对应乐团的学生
+     *
      * @param musicGroupId
      * @param teacherId
      * @return
      */
     List<StudentRegistration> getMusicGroupStu4Teacher(@Param("musicGroupId") String musicGroupId, @Param("teacherId") Integer teacherId);
+
+    StudentRegistration getStudentRegister(@Param("musicGroupId") String musicGroupId, @Param("studentId") Integer studentId);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentOrderExportDto.java

@@ -16,6 +16,8 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
 
     private BigDecimal courseFee;
 
+    private BigDecimal highOnlineCourseFee;
+
     //乐器费用
     private BigDecimal musicalFee;
 
@@ -183,4 +185,12 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     public void setRouteBalance(BigDecimal routeBalance) {
         this.routeBalance = routeBalance;
     }
+
+    public BigDecimal getHighOnlineCourseFee() {
+        return highOnlineCourseFee;
+    }
+
+    public void setHighOnlineCourseFee(BigDecimal highOnlineCourseFee) {
+        this.highOnlineCourseFee = highOnlineCourseFee;
+    }
 }

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

@@ -258,4 +258,13 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 	 * @return
 	 */
 	List<StudentPaymentOrderDetail> getStudentApplyDetail(Integer studentId,String musicGroupId);
+
+	/**
+	 * 更换学生声部
+	 * @param musicGroup
+	 * @param originalSubjectId
+	 * @param changeSubjectId
+	 * @return
+	 */
+	StudentRegistration changeStudentSubject(Integer studentId,String musicGroupId,Integer originalSubjectId,Integer changeSubjectId);
 }

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

@@ -1159,4 +1159,38 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         }
         return details;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public StudentRegistration changeStudentSubject(Integer studentId, String musicGroupId, Integer originalSubjectId, Integer changeSubjectId) {
+        studentDao.lockUser(studentId);
+        //1、更换学生的声部
+        StudentRegistration studentRegistration = studentRegistrationDao.getStudentRegister(musicGroupId,studentId);
+        studentRegistration.setActualSubjectId(changeSubjectId);
+        studentRegistrationDao.update(studentRegistration);
+
+        //2、减去原声部的已缴费数量,加上现声部的缴费人数
+        boolean updateFlag = false;
+        for (int i = 0; i < 10; i++) {
+            MusicGroupSubjectPlan originalSubjectPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(musicGroupId, originalSubjectId);
+            int originalPaidNum = originalSubjectPlan.getPaidStudentNum() == null ? 0 : originalSubjectPlan.getPaidStudentNum();
+            int originalPaidCount = 1;
+            if (originalPaidNum > 0) {
+                originalSubjectPlan.setPaidStudentNum(originalPaidNum - 1);
+                originalPaidCount = musicGroupSubjectPlanService.update(originalSubjectPlan);
+            }
+            MusicGroupSubjectPlan changeSubjectPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(musicGroupId, changeSubjectId);
+            int changelPaidNum = changeSubjectPlan.getPaidStudentNum() == null ? 0 : changeSubjectPlan.getPaidStudentNum();
+            changeSubjectPlan.setPaidStudentNum(changelPaidNum + 1);
+            int changePaidCount = musicGroupSubjectPlanService.update(changeSubjectPlan);
+            if (originalPaidCount > 0 && changePaidCount > 0) {
+                updateFlag = true;
+                break;
+            }
+        }
+        if (!updateFlag) {
+            throw new BizException("系统繁忙,更新学生声部失败,请重试");
+        }
+        return studentRegistration;
+    }
 }

+ 10 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java

@@ -19,6 +19,7 @@ import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -55,6 +56,8 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
     private SysUserCashAccountDetailService sysUserCashAccountDetailService;
     @Autowired
     private SysMessageService sysMessageService;
+    @Autowired
+    private StudentRegistrationService studentRegistrationService;
 
     @Override
     public BaseDAO<Integer, SubjectChange> getDAO() {
@@ -175,6 +178,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public SubjectChange addChange(SubjectChange subjectChange) {
         Date nowDate = new Date();
         subjectChange.setStatus(SubjectChangeStatusEnum.WAIT_PAY);
@@ -209,6 +213,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         //差价小于0退到余额
         if (amountMargin.compareTo(BigDecimal.ZERO) <= 0) {
             sysUserCashAccountService.updateBalance(subjectChange.getStudentId(), amountMargin.negate(), PlatformCashAccountDetailTypeEnum.REFUNDS, "声部更换退还");
+            studentRegistrationService.changeStudentSubject(subjectChange.getStudentId(),subjectChange.getMusicGroupId(),subjectChange.getOriginalSubjectId(),subjectChange.getChangeSubjectId());
         }
         subjectChange.setCreateTime(nowDate);
         subjectChange.setUpdateTime(nowDate);
@@ -307,7 +312,8 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         if (updateCount <= 0) {
             throw new BizException("订单更新失败");
         }
-        //更新维修单信息
+
+        //更新声部更改信息状态
         SubjectChange subjectChange = subjectChangeDao.get(Integer.parseInt(studentPaymentOrder.getMusicGroupId()));
         if (subjectChange == null) {
             throw new BizException("声部更换订单不存在");
@@ -318,6 +324,9 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
 
         Integer userId = studentPaymentOrder.getUserId();
 
+        //更新声部信息报名数量
+        studentRegistrationService.changeStudentSubject(subjectChange.getStudentId(),subjectChange.getMusicGroupId(),subjectChange.getOriginalSubjectId(),subjectChange.getChangeSubjectId());
+
         Map<Integer, String> map = new HashMap<>();
         map.put(userId, userId.toString());
 

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -647,4 +647,8 @@
         LEFT JOIN sys_user s ON s.id_ = cssp.user_id_
         WHERE cs.music_group_id_ = #{musicGroupId} AND cs.actual_teacher_id_ = #{teacherId} AND cs.group_type_ = 'MUSIC' GROUP BY s.id_
     </select>
+    <select id="getStudentRegister" resultMap="StudentRegistration">
+        SELECT * FROM student_registration WHERE music_group_id_ = #{musicGroupId} AND user_id_ = #{studentId}
+        ORDER BY id_ DESC LIMIT 1
+    </select>
 </mapper>

+ 6 - 2
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -851,6 +851,7 @@ public class ExportController extends BaseController {
             BigDecimal teachingFee = BigDecimal.ZERO;
             BigDecimal courseFee = BigDecimal.ZERO;
             BigDecimal leaseFee = BigDecimal.ZERO;
+            BigDecimal highOnlineCourseFee = BigDecimal.ZERO;
             String goodsName = "";
             if (row.getOrderDetailList() != null) {
                 for (StudentPaymentOrderDetail orderDetail : row.getOrderDetailList()) {
@@ -864,6 +865,8 @@ public class ExportController extends BaseController {
                         courseFee = courseFee.add(orderDetail.getPrice());
                     } else if (orderDetail.getType().equals(OrderDetailTypeEnum.ACCESSORIES) || orderDetail.getType().equals(OrderDetailTypeEnum.TEACHING) || orderDetail.getType().equals(OrderDetailTypeEnum.OTHER)) {
                         teachingFee = teachingFee.add(orderDetail.getPrice());
+                    }else if (orderDetail.getType().equals(OrderDetailTypeEnum.HIGH_ONLINE_COURSE)) {
+                        highOnlineCourseFee = highOnlineCourseFee.add(orderDetail.getPrice());
                     }
                 }
             }
@@ -875,6 +878,7 @@ public class ExportController extends BaseController {
             row.setTeachingFee(teachingFee);
             row.setLeaseFee(leaseFee);
             row.setMemo(goodsName);
+            row.setHighOnlineCourseFee(highOnlineCourseFee);
             //专业
             if (row.getGroupType().equals(GroupType.MUSIC)) {
                 StudentRegistration studentRegistration = studentRegistrationDao.findStudentByMusicGroupIdAndUserId(row.getMusicGroupId(), row.getUserId());
@@ -950,9 +954,9 @@ public class ExportController extends BaseController {
 
         try {
             String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "到账时间",
-                    "关联乐团ID/VIP课ID", "课程形态", "课程费用", "乐器减免费用","课程减免费用", "押金", "乐器", "教辅费用", "零星收款费用", "零星收款类别", "手续费", "专业", "分部", "单位/学校", "合作机构", "备注"};
+                    "关联乐团ID/VIP课ID", "课程形态", "课程费用","新生专享课程费用", "乐器减免费用","课程减免费用", "押金", "乐器", "教辅费用", "零星收款费用", "零星收款类别", "手续费", "专业", "分部", "单位/学校", "合作机构", "备注"};
             String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "payTime", "musicGroupId",
-                    "groupType.desc", "courseFee", "remitFee","courseRemitFee", "leaseFee", "musicalFee", "teachingFee", "sporadicAmount", "sporadicType", "transferFee", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
+                    "groupType.desc", "courseFee","highOnlineCourseFee", "remitFee","courseRemitFee", "leaseFee", "musicalFee", "teachingFee", "sporadicAmount", "sporadicType", "transferFee", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");