Browse Source

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

zouxuan 4 years ago
parent
commit
7b481a3cc6

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalenderStudentDetail.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import java.math.BigDecimal;
 import java.util.Objects;
 
 /**
@@ -24,6 +25,9 @@ public class MusicGroupPaymentCalenderStudentDetail {
 	
 	/** 现价 */
 	private java.math.BigDecimal courseCurrentPrice;
+
+	/** 学员需要扣减的课程余额 */
+	private java.math.BigDecimal cutAmount = BigDecimal.ZERO;
 	
 	/** 课程类型 */
 	private String courseType;
@@ -42,7 +46,15 @@ public class MusicGroupPaymentCalenderStudentDetail {
 	
 	/**  */
 	private java.util.Date updateTime;
-	
+
+	public BigDecimal getCutAmount() {
+		return cutAmount;
+	}
+
+	public void setCutAmount(BigDecimal cutAmount) {
+		this.cutAmount = cutAmount;
+	}
+
 	public void setId(Integer id){
 		this.id = id;
 	}

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

@@ -144,7 +144,7 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      * @param masterTotalPrice 主乐团剩余课程价值
      * @return
      */
-    void insertStudent(String studentIds,String oldMusicGroupId,String newMusicGroupId,BigDecimal masterTotalPrice);
+    void insertStudent(String studentIds,String oldMusicGroupId,String newMusicGroupId,Map<Integer, List<MusicGroupPaymentCalenderStudentDetail>> collect);
 
     /**
      * 获取班级学生

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

@@ -3639,10 +3639,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 }else {
                     //如果剩余课程余额大于等于总价值,那么补交0元
                     if(bigDecimal.doubleValue() >= totalPrice.doubleValue()){
+                        calenderDto.setCutAmount(totalPrice);
                         calenderDto.setCourseCurrentPrice(BigDecimal.ZERO);
                         calenderDto.setCourseOriginalPrice(BigDecimal.ZERO);
                     }else {
                         calenderDto.setCourseCurrentPrice(totalPrice.subtract(bigDecimal));
+                        calenderDto.setCutAmount(bigDecimal);
                         calenderDto.setCourseOriginalPrice(totalPrice.subtract(bigDecimal));
                     }
                     //剩余课程余额减去主班对应课程类型总的课程价值,负数就是需要补交的金额
@@ -3709,7 +3711,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         if(hasStudent){
             throw new BizException("操作失败: 主班包含部分已选学员");
         }
-        
         //学员列表
         List<Integer> classGroupIds = mergeClassSplitClassAffirmDto.getClassGroupIds();
         //班级和学员关联
@@ -3723,9 +3724,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         BigDecimal masterTotalPrice = getMasterTotalPrice(masterClassGroupId);
         //是否有需要审核的缴费项目
         //将学员加入新乐团、扣除原乐团剩余课程余额、补充到现有乐团
+        Map<Integer, List<MusicGroupPaymentCalenderStudentDetail>> collect = musicGroupPaymentCalenderStudentDetails.stream().collect(Collectors.groupingBy(e -> e.getUserId()));
         for (Map<Integer, String> classGroupStudent : classGroupStudents) {
             Integer classGroupId = classGroupStudent.keySet().iterator().next();
-            studentRegistrationService.insertStudent(classGroupStudent.get(classGroupId),musicGroupDao.findByClassGroupId(classGroupId).getId(),musicGroup.getId(),masterTotalPrice);
+            studentRegistrationService.insertStudent(classGroupStudent.get(classGroupId),musicGroupDao.findByClassGroupId(classGroupId).getId(),musicGroup.getId(),collect);
         }
 
         paymentCalenderDto.setMusicGroupId(musicGroup.getId());
@@ -3793,14 +3795,21 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //删除学员课程
         courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds, studentIds);
         //删除班级关联的学员
+        List<Integer> classGroupIds = new ArrayList<>();
         if (classGroupStudents != null && classGroupStudents.size() > 0) {
             for (Map<String, String> classGroupStudent : classGroupStudents) {
                 Set<String> integers = classGroupStudent.keySet();
                 for (String integer : integers) {
+                    classGroupIds.add(Integer.parseInt(integer));
                     classGroupStudentMapperDao.deleteByClassGroupIdAndStudents(Integer.parseInt(integer), classGroupStudent.get(integer));
                 }
             }
         }
+        //解冻课程
+        courseScheduleDao.batchUpdateLockByCourseIds(allLockCourseIds,0);
+        //解冻班级
+        classGroupIds.add(masterClassGroupId);
+        classGroupDao.batchUpdateLockByClassGroupIds(classGroupIds,0);
         //获取没有学员的课程
         List<Long> delCourseIds = courseScheduleDao.findNoStudentCourseIds(courseIds);
         if (delCourseIds != null && delCourseIds.size() > 0) {

+ 26 - 32
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -17,6 +17,7 @@ import java.util.stream.Collectors;
 import javax.annotation.Resource;
 
 import com.ym.mec.auth.api.enums.CertificateTypeEnum;
+import com.ym.mec.biz.dal.entity.*;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -56,29 +57,6 @@ import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
 import com.ym.mec.biz.dal.dto.StudentInfo;
 import com.ym.mec.biz.dal.dto.StudentMusicDetailDto;
 import com.ym.mec.biz.dal.dto.StudentMusicGroupDto;
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
-import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail;
-import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.StudentCourseFeeDetail;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.entity.Subject;
-import com.ym.mec.biz.dal.entity.SubjectChange;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
 import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
@@ -322,7 +300,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         }
 
         StudentRegistration hasReg = getByPhoneAndMusicGroupId(studentRegistration.getMusicGroupId(), studentRegistration.getParentsPhone());
-        if (hasReg != null) {
+        if (hasReg != null && hasReg.getMusicGroupStatus() != StudentMusicGroupStatusEnum.QUIT) {
             throw new BizException("该乐团您已报名");
         }
 
@@ -352,18 +330,24 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         studentRegistration.setUpdateTime(date);
         studentRegistration.setUserId(sysUser.getId());
         studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.APPLY);
-        studentRegistrationDao.insert(studentRegistration);
+        if(hasReg != null){
+            studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
+            studentRegistration.setId(hasReg.getId());
+            studentRegistrationDao.update(studentRegistration);
+        }else {
+            studentRegistrationDao.insert(studentRegistration);
+        }
 
         // 增加报名学生数
-        musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId(), 1);
+        musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId(), 1);
         // 报名成功后,发送短信
         // String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + studentRegistration.getMusicGroupId();
         String serverPhone = sysConfigDao.findConfigValue(SysConfigService.SERVER_PHONE);
-        Subject subject = subjectDao.get(studentRegistration.getActualSubjectId());
+        Subject subject = subjectDao.get(studentRegistration.getSubjectId());
         // MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
 
         Map<Integer, String> map = new HashMap<>(1);
-        map.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
+        map.put(sysUser.getId(), studentRegistration.getParentsPhone());
         sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_APPLY_MESSAGE, map, null, 0, "", "",
                 studentRegistration.getParentsName(), subject.getName(), serverPhone);
 
@@ -841,16 +825,20 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-    public void insertStudent(String studentIds,String oldMusicGroupId,String newMusicGroupId,BigDecimal masterTotalPrice){
-        if(oldMusicGroupId == newMusicGroupId){
-            return;
-        }
+    public void insertStudent(String studentIds,String oldMusicGroupId,String newMusicGroupId,Map<Integer, List<MusicGroupPaymentCalenderStudentDetail>> collect){
         SysUser sysUser1 = sysUserFeignService.queryUserInfo();
         //获取旧乐团学员注册信息
         List<StudentRegistration> studentRegistrations = studentRegistrationDao.queryByUserIdsAndMusicGroupId(studentIds,oldMusicGroupId);
         List<StudentCourseFeeDetail> studentCourseFeeDetails = new ArrayList<>();
         BigDecimal amount = BigDecimal.ZERO;
         for (StudentRegistration studentRegistration : studentRegistrations) {
+            BigDecimal masterTotalPrice = collect.get(studentRegistration.getUserId()).stream().map(e->e.getCourseCurrentPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
+            if(masterTotalPrice.doubleValue() > studentRegistration.getSurplusCourseFee().doubleValue()){
+                throw new BizException("用户信息发生变动,请重新提交");
+            }
+            if(oldMusicGroupId == newMusicGroupId){
+                continue;
+            }
             //记录课程余额消费日志
             if(studentRegistration.getSurplusCourseFee().doubleValue() > 0d && masterTotalPrice.doubleValue() > 0d){
                 StudentCourseFeeDetail studentCourseFeeDetail = new StudentCourseFeeDetail();
@@ -875,6 +863,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             StudentRegistration registration = studentRegistrationDao.getByPhoneAndMusicGroupId(newMusicGroupId, studentRegistration.getParentsPhone());
             if (registration != null) {
                 //修改剩余课程余额
+                registration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
                 registration.setSurplusCourseFee(registration.getSurplusCourseFee().add(amount));
                 studentRegistrationDao.update(registration);
             }else {
@@ -1618,6 +1607,11 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Transactional(rollbackFor = Exception.class)
     public Boolean batchDelRegs(String musicGroupId, List<Integer> userIds) {
         List<StudentRegistration> registrations = studentRegistrationDao.findStudentListByUserIdList(musicGroupId, userIds);
+        for (StudentRegistration registration : registrations) {
+            if(registration.getPaymentStatus().equals(PaymentStatusEnum.OPEN)||registration.getPaymentStatus().equals(PaymentStatusEnum.YES)){
+                throw new BizException("开启缴费/已缴费的学员不能删除");
+            }
+        }
         if (registrations.size() <= 0) {
             throw new BizException("删除的学员不存在,请核查");
         }

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

@@ -254,7 +254,7 @@
                 AND sci.charge_type_ = #{chargeType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>
             <if test="noneTqType != null">
-                and spo.mer_no_ != '淘器微信'
+                AND spo.mer_nos_ != '淘器微信'
             </if>
         </where>
     </sql>

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

@@ -393,7 +393,7 @@
 
     <!-- 根据乐团编号和手机号查询注册乐团注册信息-->
     <select id="getByPhoneAndMusicGroupId" resultMap="StudentRegistration">
-        SELECT * FROM student_registration WHERE music_group_id_ = #{musicGroupId} AND parents_phone_ = #{parentsPhone} AND music_group_status_ != 'QUIT' LIMIT 1
+        SELECT * FROM student_registration WHERE music_group_id_ = #{musicGroupId} AND parents_phone_ = #{parentsPhone}
     </select>
 
     <resultMap type="com.ym.mec.auth.api.entity.SysUser" id="FindSysUser">
@@ -740,4 +740,11 @@
         LEFT JOIN sys_user su ON su.id_ = sr.user_id_
         WHERE sr.music_group_id_ = #{musicGroupId} AND FIND_IN_SET(sr.user_id_,#{studentIds}) AND sr.music_group_status_ != 'QUIT'
     </select>
+    <!-- 批量删除信息 -->
+    <delete id="batchDelete">
+        DELETE FROM student_registration WHERE id_ IN
+        <foreach collection="ids" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </delete>
 </mapper>

+ 4 - 4
mec-util/src/main/java/com/ym/mec/util/web/WebUtil.java

@@ -7,17 +7,17 @@
  */
 package com.ym.mec.util.web;
 
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.ym.mec.util.encode.AES;
 import org.apache.commons.lang3.StringUtils;
 
+import static com.ym.mec.util.encode.AES.encrypt;
+
 /**
  * 
  */

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

@@ -4,7 +4,6 @@ import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderStudentDetail;
-import com.ym.mec.common.exception.BizException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;