Browse Source

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

zouxuan 4 years ago
parent
commit
5fab771d55

+ 132 - 193
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1,5 +1,9 @@
 package com.ym.mec.biz.service.impl;
 
+import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.NON_PAYMENT;
+import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED;
+import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
+
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -16,7 +20,6 @@ import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
 
-import com.ym.mec.auth.api.enums.CertificateTypeEnum;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,6 +34,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUserRole;
+import com.ym.mec.auth.api.enums.CertificateTypeEnum;
 import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import com.ym.mec.biz.dal.dao.GoodsDao;
 import com.ym.mec.biz.dal.dao.MusicGroupDao;
@@ -111,8 +115,6 @@ import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.biz.service.SysUserCashAccountDetailService;
 import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
-import com.ym.mec.common.entity.ImGroupMember;
-import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.entity.ImResult;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.exception.BizException;
@@ -124,10 +126,6 @@ import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
 
-import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.NON_PAYMENT;
-import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED;
-import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
-
 @Service
 public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
 
@@ -652,192 +650,133 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Integer insertStudent(StudentAddDto studentAddDto) throws Exception {
-        StudentRegistration studentRegistration = studentAddDto.getStudentRegistration();
-        if (studentRegistration == null) {
-            throw new BizException("参数校验失败");
-        }
-        /*if(studentAddDto.getSignClassId() == null && studentAddDto.getMixClassId() == null){
-            throw new BizException("参数校验失败: 单技班或合奏班必填一项");
-        }*/
-        Date date = new Date();
-        String musicGroupId = studentRegistration.getMusicGroupId();
-        
-        studentRegistration.setCreateTime(date);
-        studentRegistration.setUpdateTime(date);
-
-        StudentRegistration phoneAndMusicGroupId = studentRegistrationDao.getByPhoneAndMusicGroupId(musicGroupId, studentRegistration.getParentsPhone());
-        if (phoneAndMusicGroupId != null && phoneAndMusicGroupId.getMusicGroupStatus() != StudentMusicGroupStatusEnum.QUIT && phoneAndMusicGroupId.getMusicGroupStatus() != StudentMusicGroupStatusEnum.APPLY) {
-            throw new BizException("该学员已存在");
-        } else {
-            SysUser sysUser = studentRegistrationDao.getSysUserByPhone(studentRegistration.getParentsPhone());
-            MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
-            Integer userId;
-            if (sysUser == null) {
-                //新增user
-                sysUser = new SysUser();
-                sysUser.setPhone(studentRegistration.getParentsPhone());
-                sysUser.setRealName(studentRegistration.getParentsName());
-                sysUser.setUsername(studentRegistration.getName());
-                sysUser.setGender(studentRegistration.getGender());
-                sysUser.setUserType("STUDENT");
-                sysUser.setIdCardNo(studentRegistration.getIdCardNo());
-                sysUser.setOrganId(musicGroup.getOrganId());
-                sysUser.setBirthdate(studentRegistration.getBirthdate());
-                teacherDao.addSysUser(sysUser);
-                userId = sysUser.getId();
-                studentDao.insert(new Student(userId, studentRegistration.getSubjectId().toString()));
-                //添加用户现金账户
-                sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
-                //添加用户电子签章账户
-//                contractService.register(userId, sysUser.getRealName(), sysUser.getIdCardNo(), sysUser.getPhone());
-                ImResult register = imFeignService.register(new ImUserModel(userId.toString(), sysUser.getUsername(), null));
-                sysUser.setImToken(register.getToken());
-                teacherDao.updateUser(sysUser);
-            } else {
-                if (StringUtils.isNotEmpty(sysUser.getUsername())) {
-                    if (!sysUser.getUsername().equals(studentRegistration.getName())) {
-                        throw new BizException("操作失败:账户已被注册");
-                    }
-                }
-                if (!sysUser.getUserType().contains("STUDENT")) {
-                    sysUser.setUserType(sysUser.getUserType() + ",STUDENT");
-                }
-                sysUser.setPhone(studentRegistration.getParentsPhone());
-                sysUser.setRealName(studentRegistration.getParentsName());
-                sysUser.setUsername(studentRegistration.getName());
-                sysUser.setGender(studentRegistration.getGender());
-                sysUser.setOrganId(musicGroup.getOrganId());
-                sysUser.setBirthdate(studentRegistration.getBirthdate());
-                teacherDao.updateUser(sysUser);
-                userId = sysUser.getId();
-                Student student = studentDao.get(userId);
-                if (student == null) {
-                    studentDao.insert(new Student(userId, studentRegistration.getSubjectId().toString()));
-                } else if (StringUtils.isEmpty(student.getSubjectIdList())) {
-                    student.setSubjectIdList(studentRegistration.getSubjectId().toString());
-                    student.setUpdateTime(date);
-                    studentDao.update(student);
-                } else if (StringUtils.isNotEmpty(student.getSubjectIdList())) {
-                    String[] split = student.getSubjectIdList().split(",");
-                    List<String> list = new ArrayList<>(Arrays.asList(split));
-                    if (!list.contains(studentRegistration.getSubjectId().toString())) {
-                        list.add(studentRegistration.getSubjectId().toString());
-                        student.setSubjectIdList(StringUtils.join(list, ","));
-                        student.setUpdateTime(date);
-                        studentDao.update(student);
-                    }
-                }
-            }
-            MusicGroupStudentFee studentFeeDaoByUser = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
-            if (studentFeeDaoByUser != null) {
-                throw new BizException("该学员已存在");
-            }
-            studentRegistration.setActualSubjectId(studentRegistration.getSubjectId());
-            studentRegistration.setUserId(userId);
-            studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);
-            studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.APPLY);
-            studentRegistration.setTemporaryCourseFee(studentAddDto.getTemporaryCourseFee());
-            //学生报名表
-            Set<Integer> roleIds = new HashSet<>(1);
-            roleIds.add(SysUserRole.OPERATION_EXECUTIVE);
-
-            sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds, musicGroup.getOrganId()), MessageTypeEnum.BACKSTAGE_MUSIC_GROUP_ADD_STUDENT, "", musicGroup.getName(), studentRegistration.getName());
-            //增加报名学生数
-            musicGroupSubjectPlanService.addApplyStudentNum(musicGroupId, studentRegistration.getSubjectId(), 1);
-            //添加班级关联
-            addStudents(studentAddDto, userId);
-            //保存乐团学生费用表
-            if (studentAddDto.getCourseFee() == null) {
-                MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
-                studentAddDto.setCourseFee(musicOneSubjectClassPlan.getFee());
-            }
-//            Date nextPaymentDate = musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId, null, null);
-
-            StudentPaymentOrder waitPayOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.WAIT_PAY);
-
-            if (waitPayOrder != null) {
-                waitPayOrder.setStatus(DealStatusEnum.CLOSE);
-                studentPaymentOrderService.update(waitPayOrder);
-            }
-            //生成订单
-            StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
-            studentPaymentOrder.setUserId(userId);
-            studentPaymentOrder.setGroupType(GroupType.MUSIC);
-            studentPaymentOrder.setType(OrderTypeEnum.APPLY);
-            studentPaymentOrder.setStatus(DealStatusEnum.WAIT_PAY);
-            studentPaymentOrder.setMusicGroupId(musicGroupId);
-            studentPaymentOrder.setClassGroupId(studentAddDto.getSignClassId());
-            studentPaymentOrder.setOrganId(musicGroup.getOrganId());
-            studentPaymentOrder.setRoutingOrganId(musicGroup.getOrganId());
-
-            //生成订单明细
-            List<StudentPaymentOrderDetail> studentPaymentOrderDetails = studentAddDto.getStudentPaymentOrderDetails();
-            if (studentPaymentOrderDetails == null) {
-                studentPaymentOrderDetails = new ArrayList<>();
-            } else {
-                studentPaymentOrderDetails.forEach(e -> {
-                    if (e.getPrice() == null) {
-                        throw new BizException("请补全订单信息");
-                    }
-                });
-            }
-            StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
-            studentPaymentOrderDetail.setPrice(studentAddDto.getTemporaryCourseFee() == null ? BigDecimal.ZERO : studentAddDto.getTemporaryCourseFee());
-            studentPaymentOrderDetail.setType(OrderDetailTypeEnum.COURSE);
-            studentPaymentOrderDetails.add(studentPaymentOrderDetail);
-            //汇总金额
-
-            BigDecimal reduce = studentPaymentOrderDetails.stream().map(StudentPaymentOrderDetail::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
-            MusicGroupStudentFee.PaymentStatus paymentStatus = MusicGroupStudentFee.PaymentStatus.NON_PAYMENT;
-            if (reduce.compareTo(BigDecimal.ZERO) == 0) {
-                paymentStatus = PAID_COMPLETED;
-                studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
-                studentRegistration.setPaymentStatus(YES);
-                studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
-                studentPaymentOrder.setActualAmount(reduce);
-                studentPaymentOrder.setPayTime(date);
-            }
-            MusicGroupStudentFee musicGroupStudentFee = new MusicGroupStudentFee(musicGroupId,
-                    userId, studentRegistration.getSubjectId(), studentAddDto.getCourseFee(),
-                    null, studentAddDto.getTemporaryCourseFee(), paymentStatus);
-
-            /*if (musicGroup.getFeeType() != null && musicGroup.getFeeType() != MusicGroupPaymentCalender.FeeType.OFFLINE && musicGroupStudentFee.getTemporaryCourseFee().doubleValue() * 100 == 0) {
-                musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
-            }*/
-            musicGroupStudentFeeDao.insert(musicGroupStudentFee);
-//            musicGroupStudentFeeDao.insert(new MusicGroupStudentFee(musicGroupId,
-//                    userId, studentRegistration.getSubjectId(), studentAddDto.getCourseFee(),
-//                    nextPaymentDate, studentAddDto.getTemporaryCourseFee(), paymentStatus));
-            musicGroupStudentFeeDao.updateCalender(userId, musicGroupId);
-            studentPaymentOrder.setExpectAmount(reduce);
-            //当前学员是否以前存在过当前乐团
-            if (phoneAndMusicGroupId != null) {
-                studentRegistration.setId(phoneAndMusicGroupId.getId());
-                studentRegistrationDao.update(studentRegistration);
-            } else {
-                studentRegistrationDao.insertBasic(studentRegistration);
-            }
-            studentRegistrationDao.updateCurrentClass(studentRegistration);
-            studentPaymentOrderService.insert(studentPaymentOrder);
-            studentPaymentOrderDetails.forEach(e -> {
-                e.setPaymentOrderId(studentPaymentOrder.getId());
-            });
-            studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetails);
-            if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN) {
-                Map<Integer, String> receivers = new HashMap<>(1);
-                receivers.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
-                if (reduce.compareTo(BigDecimal.ZERO) == 0) {
-                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_MUSIC_GROUP_ADD_STUDENT_FREE,
-                            receivers, null, 0, null, "", studentRegistration.getParentsName(), studentRegistration.getName(), musicGroup.getName());
-                } else {
-                    String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + musicGroupId;
-                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_MUSIC_GROUP_ADD_STUDENT, receivers, null, 0, null, "", studentRegistration.getParentsName(), studentRegistration.getName(), musicGroup.getName(), HttpUtil.getSortUrl(studentApplyUrl));
-                }
-            }
-            return userId;
-        }
-    }
+	public Integer insertStudent(StudentAddDto studentAddDto) throws Exception {
+		StudentRegistration studentRegistration = studentAddDto.getStudentRegistration();
+		if (studentRegistration == null) {
+			throw new BizException("参数校验失败");
+		}
+		/*
+		 * if(studentAddDto.getSignClassId() == null && studentAddDto.getMixClassId() == null){ throw new BizException("参数校验失败: 单技班或合奏班必填一项"); }
+		 */
+		Date date = new Date();
+		String musicGroupId = studentRegistration.getMusicGroupId();
+
+		studentRegistration.setCreateTime(date);
+		studentRegistration.setUpdateTime(date);
+
+		StudentRegistration phoneAndMusicGroupId = studentRegistrationDao.getByPhoneAndMusicGroupId(musicGroupId, studentRegistration.getParentsPhone());
+		if (phoneAndMusicGroupId != null && phoneAndMusicGroupId.getMusicGroupStatus() != StudentMusicGroupStatusEnum.QUIT
+				&& phoneAndMusicGroupId.getMusicGroupStatus() != StudentMusicGroupStatusEnum.APPLY) {
+			throw new BizException("该学员已存在");
+		} else {
+			SysUser sysUser = studentRegistrationDao.getSysUserByPhone(studentRegistration.getParentsPhone());
+			MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+			Integer userId;
+			if (sysUser == null) {
+				// 新增user
+				sysUser = new SysUser();
+				sysUser.setPhone(studentRegistration.getParentsPhone());
+				sysUser.setRealName(studentRegistration.getParentsName());
+				sysUser.setUsername(studentRegistration.getName());
+				sysUser.setGender(studentRegistration.getGender());
+				sysUser.setUserType("STUDENT");
+				sysUser.setIdCardNo(studentRegistration.getIdCardNo());
+				sysUser.setOrganId(musicGroup.getOrganId());
+				sysUser.setBirthdate(studentRegistration.getBirthdate());
+				teacherDao.addSysUser(sysUser);
+				userId = sysUser.getId();
+				studentDao.insert(new Student(userId, studentRegistration.getSubjectId().toString()));
+				// 添加用户现金账户
+				sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
+				// 添加用户电子签章账户
+				// contractService.register(userId, sysUser.getRealName(), sysUser.getIdCardNo(), sysUser.getPhone());
+				ImResult register = imFeignService.register(new ImUserModel(userId.toString(), sysUser.getUsername(), null));
+				sysUser.setImToken(register.getToken());
+				teacherDao.updateUser(sysUser);
+			} else {
+				if (StringUtils.isNotEmpty(sysUser.getUsername())) {
+					if (!sysUser.getUsername().equals(studentRegistration.getName())) {
+						throw new BizException("操作失败:账户已被注册");
+					}
+				}
+				if (!sysUser.getUserType().contains("STUDENT")) {
+					sysUser.setUserType(sysUser.getUserType() + ",STUDENT");
+				}
+				sysUser.setPhone(studentRegistration.getParentsPhone());
+				sysUser.setRealName(studentRegistration.getParentsName());
+				sysUser.setUsername(studentRegistration.getName());
+				sysUser.setGender(studentRegistration.getGender());
+				sysUser.setOrganId(musicGroup.getOrganId());
+				sysUser.setBirthdate(studentRegistration.getBirthdate());
+				teacherDao.updateUser(sysUser);
+				userId = sysUser.getId();
+				Student student = studentDao.get(userId);
+				if (student == null) {
+					studentDao.insert(new Student(userId, studentRegistration.getSubjectId().toString()));
+				} else if (StringUtils.isEmpty(student.getSubjectIdList())) {
+					student.setSubjectIdList(studentRegistration.getSubjectId().toString());
+					student.setUpdateTime(date);
+					studentDao.update(student);
+				} else if (StringUtils.isNotEmpty(student.getSubjectIdList())) {
+					String[] split = student.getSubjectIdList().split(",");
+					List<String> list = new ArrayList<>(Arrays.asList(split));
+					if (!list.contains(studentRegistration.getSubjectId().toString())) {
+						list.add(studentRegistration.getSubjectId().toString());
+						student.setSubjectIdList(StringUtils.join(list, ","));
+						student.setUpdateTime(date);
+						studentDao.update(student);
+					}
+				}
+			}
+			MusicGroupStudentFee studentFeeDaoByUser = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
+			if (studentFeeDaoByUser != null) {
+				throw new BizException("该学员已存在");
+			}
+			studentRegistration.setActualSubjectId(studentRegistration.getSubjectId());
+			studentRegistration.setUserId(userId);
+			studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);
+			studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.APPLY);
+			studentRegistration.setTemporaryCourseFee(studentAddDto.getTemporaryCourseFee());
+			// 学生报名表
+			Set<Integer> roleIds = new HashSet<>(1);
+			roleIds.add(SysUserRole.OPERATION_EXECUTIVE);
+
+			sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds, musicGroup.getOrganId()),
+					MessageTypeEnum.BACKSTAGE_MUSIC_GROUP_ADD_STUDENT, "", musicGroup.getName(), studentRegistration.getName());
+			// 增加报名学生数
+			musicGroupSubjectPlanService.addApplyStudentNum(musicGroupId, studentRegistration.getSubjectId(), 1);
+
+			MusicGroupStudentFee musicGroupStudentFee = new MusicGroupStudentFee(musicGroupId, userId, studentRegistration.getSubjectId(),
+					studentAddDto.getCourseFee(), null, studentAddDto.getTemporaryCourseFee(), null);
+
+			/*
+			 * if (musicGroup.getFeeType() != null && musicGroup.getFeeType() != MusicGroupPaymentCalender.FeeType.OFFLINE &&
+			 * musicGroupStudentFee.getTemporaryCourseFee().doubleValue() * 100 == 0) {
+			 * musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1); }
+			 */
+			musicGroupStudentFeeDao.insert(musicGroupStudentFee);
+			// musicGroupStudentFeeDao.insert(new MusicGroupStudentFee(musicGroupId,
+			// userId, studentRegistration.getSubjectId(), studentAddDto.getCourseFee(),
+			// nextPaymentDate, studentAddDto.getTemporaryCourseFee(), paymentStatus));
+			// 当前学员是否以前存在过当前乐团
+			if (phoneAndMusicGroupId != null) {
+				studentRegistration.setId(phoneAndMusicGroupId.getId());
+				studentRegistrationDao.update(studentRegistration);
+			} else {
+				studentRegistrationDao.insertBasic(studentRegistration);
+			}
+			studentRegistrationDao.updateCurrentClass(studentRegistration);
+			if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN) {
+				Map<Integer, String> receivers = new HashMap<>(1);
+				receivers.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
+				String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + musicGroupId;
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_MUSIC_GROUP_ADD_STUDENT, receivers,
+						null, 0, null, "", studentRegistration.getParentsName(), studentRegistration.getName(), musicGroup.getName(),
+						HttpUtil.getSortUrl(studentApplyUrl));
+			}
+			return userId;
+		}
+	}
 
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)