|
@@ -1,15 +1,97 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
+import java.io.IOException;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.HashSet;
|
|
|
+import java.util.Iterator;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+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;
|
|
|
+
|
|
|
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.biz.dal.dao.*;
|
|
|
-import com.ym.mec.biz.dal.dto.*;
|
|
|
-import com.ym.mec.biz.dal.entity.*;
|
|
|
-import com.ym.mec.biz.dal.enums.*;
|
|
|
+import com.ym.mec.biz.dal.dao.GoodsDao;
|
|
|
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
|
|
|
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
|
|
|
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
|
|
|
+import com.ym.mec.biz.dal.dao.StudentDao;
|
|
|
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
|
|
|
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
|
|
|
+import com.ym.mec.biz.dal.dao.SubjectChangeDao;
|
|
|
+import com.ym.mec.biz.dal.dao.SubjectDao;
|
|
|
+import com.ym.mec.biz.dal.dao.SysConfigDao;
|
|
|
+import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
|
|
|
+import com.ym.mec.biz.dal.dao.TeacherDao;
|
|
|
+import com.ym.mec.biz.dal.dto.CourseFormDto;
|
|
|
+import com.ym.mec.biz.dal.dto.StudentAddDto;
|
|
|
+import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
|
|
|
+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.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.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.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.DealStatusEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.GoodsType;
|
|
|
+import com.ym.mec.biz.dal.enums.GroupType;
|
|
|
+import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
|
|
|
import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
|
|
|
-import com.ym.mec.biz.service.*;
|
|
|
+import com.ym.mec.biz.service.ClassGroupService;
|
|
|
+import com.ym.mec.biz.service.ClassGroupStudentMapperService;
|
|
|
+import com.ym.mec.biz.service.ContractService;
|
|
|
+import com.ym.mec.biz.service.CourseScheduleService;
|
|
|
+import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
|
|
|
+import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
|
|
|
+import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
|
|
|
+import com.ym.mec.biz.service.SellOrderService;
|
|
|
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
|
|
|
+import com.ym.mec.biz.service.StudentPaymentOrderService;
|
|
|
+import com.ym.mec.biz.service.StudentRegistrationService;
|
|
|
+import com.ym.mec.biz.service.SubjectService;
|
|
|
+import com.ym.mec.biz.service.SysConfigService;
|
|
|
+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;
|
|
@@ -22,23 +104,9 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
import com.ym.mec.im.ImFeignService;
|
|
|
import com.ym.mec.thirdparty.eseal.ESealPlugin;
|
|
|
import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
|
|
|
-import com.ym.mec.thirdparty.user.realname.RealnameAuthenticationPluginContext;
|
|
|
-import com.ym.mec.thirdparty.user.realname.provider.LinkfaceRealnameAuthenticationPlugin;
|
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
+import com.ym.mec.util.date.DateUtil;
|
|
|
import com.ym.mec.util.http.HttpUtil;
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.beans.factory.annotation.Value;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-
|
|
|
-import javax.annotation.Resource;
|
|
|
-import java.io.IOException;
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.util.*;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
|
|
@@ -216,81 +284,58 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public StudentRegistration addStudent(StudentRegistration studentRegistration) throws Exception {
|
|
|
- String key = "_student_registration";
|
|
|
- long threadId = Thread.currentThread().getId();
|
|
|
- if (!redisCache.getLocked(key, threadId, 10)) {
|
|
|
- throw new BizException("系统繁忙,请稍后再试");
|
|
|
+ Integer userId = studentRegistration.getUserId();
|
|
|
+
|
|
|
+ Student student = studentDao.getLocked(userId);
|
|
|
+ if (student == null) {
|
|
|
+ throw new BizException("查询学生信息失败");
|
|
|
}
|
|
|
- try {
|
|
|
- Date date = new Date();
|
|
|
- Integer userId = 0;
|
|
|
- SysUser sysUser = studentRegistrationDao.getSysUserByPhone(studentRegistration.getParentsPhone());
|
|
|
- if (sysUser == null) {
|
|
|
- sysUser = new SysUser();
|
|
|
- sysUser.setPhone(studentRegistration.getParentsPhone());
|
|
|
- sysUser.setCreateTime(date);
|
|
|
- sysUser.setUpdateTime(date);
|
|
|
- sysUser.setLockFlag(0);
|
|
|
- sysUser.setDelFlag(com.ym.mec.auth.api.enums.YesOrNoEnum.NO);
|
|
|
- sysUser.setUserType("STUDENT");
|
|
|
- sysUser.setGender(studentRegistration.getGender());
|
|
|
- sysUser.setOrganId(studentRegistration.getOrganId());
|
|
|
- sysUser.setRealName(studentRegistration.getParentsName());
|
|
|
- sysUser.setUsername(studentRegistration.getName());
|
|
|
- sysUser.setIdCardNo(studentRegistration.getIdCardNo());
|
|
|
- sysUser.setBirthdate(studentRegistration.getBirthdate());
|
|
|
- teacherDao.addSysUser(sysUser);
|
|
|
- userId = sysUser.getId();
|
|
|
- // 添加用户现金账户
|
|
|
- sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
|
|
|
- // 注册到融云
|
|
|
- if (StringUtils.isEmpty(sysUser.getAvatar())) {
|
|
|
- sysUser.setAvatar(sysConfigDao.findConfigValue(SysConfigService.USER_DEFAULT_HEAD_URL));
|
|
|
- }
|
|
|
- ImResult register = imFeignService.register(new ImUserModel(userId.toString(), sysUser.getUsername(), sysUser.getAvatar()));
|
|
|
- sysUser.setImToken(register.getToken());
|
|
|
- } 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.setOrganId(studentRegistration.getOrganId());
|
|
|
- sysUser.setRealName(studentRegistration.getParentsName());
|
|
|
|
|
|
- sysUser.setUsername(studentRegistration.getName());
|
|
|
- sysUser.setGender(studentRegistration.getGender());
|
|
|
- sysUser.setBirthdate(studentRegistration.getBirthdate());
|
|
|
- sysUser.setCreateTime(date);
|
|
|
- sysUser.setUpdateTime(date);
|
|
|
- teacherDao.updateUser(sysUser);
|
|
|
- }
|
|
|
-
|
|
|
- studentRegistration.setActualSubjectId(studentRegistration.getSubjectId());
|
|
|
- studentRegistration.setCreateTime(date);
|
|
|
- studentRegistration.setUpdateTime(date);
|
|
|
- studentRegistration.setUserId(sysUser.getId());
|
|
|
- studentRegistrationDao.insert(studentRegistration);
|
|
|
- studentRegistrationDao.updateCurrentClass(studentRegistration);
|
|
|
- // 增加报名学生数
|
|
|
- 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());
|
|
|
- // MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
|
|
|
-
|
|
|
- Map<Integer, String> map = new HashMap<>(1);
|
|
|
- map.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
|
|
|
- sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_APPLY_MESSAGE, map, null, 0, "", "",
|
|
|
- studentRegistration.getParentsName(), subject.getName(), serverPhone);
|
|
|
- } finally {
|
|
|
- redisCache.releaseLocked(key, threadId);
|
|
|
+ StudentRegistration hasReg = getByPhoneAndMusicGroupId(studentRegistration.getMusicGroupId(), studentRegistration.getParentsPhone());
|
|
|
+ if (hasReg != null) {
|
|
|
+ throw new BizException("该乐团您已报名");
|
|
|
+ }
|
|
|
+
|
|
|
+ Date date = new Date();
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserByMobile(studentRegistration.getParentsPhone());
|
|
|
+ if (sysUser == null) {
|
|
|
+ throw new BizException("用户信息查询失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!sysUser.getUserType().contains("STUDENT")) {
|
|
|
+ sysUser.setUserType(sysUser.getUserType() + ",STUDENT");
|
|
|
}
|
|
|
+ sysUser.setPhone(studentRegistration.getParentsPhone());
|
|
|
+ sysUser.setOrganId(studentRegistration.getOrganId());
|
|
|
+ sysUser.setRealName(studentRegistration.getParentsName());
|
|
|
+
|
|
|
+ sysUser.setUsername(studentRegistration.getName());
|
|
|
+ sysUser.setGender(studentRegistration.getGender());
|
|
|
+ sysUser.setBirthdate(studentRegistration.getBirthdate());
|
|
|
+ sysUser.setCreateTime(date);
|
|
|
+ sysUser.setUpdateTime(date);
|
|
|
+ teacherDao.updateUser(sysUser);
|
|
|
+
|
|
|
+ studentRegistration.setActualSubjectId(studentRegistration.getSubjectId());
|
|
|
+ studentRegistration.setCreateTime(date);
|
|
|
+ studentRegistration.setUpdateTime(date);
|
|
|
+ studentRegistration.setUserId(sysUser.getId());
|
|
|
+ studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.APPLY);
|
|
|
+ studentRegistrationDao.insert(studentRegistration);
|
|
|
+
|
|
|
+ // 增加报名学生数
|
|
|
+ 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());
|
|
|
+ // MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
|
|
|
+
|
|
|
+ Map<Integer, String> map = new HashMap<>(1);
|
|
|
+ map.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_APPLY_MESSAGE, map, null, 0, "", "",
|
|
|
+ studentRegistration.getParentsName(), subject.getName(), serverPhone);
|
|
|
+
|
|
|
return studentRegistration;
|
|
|
}
|
|
|
|