yonge 4 лет назад
Родитель
Сommit
30e50b8776

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -14,6 +14,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Student> {
 public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Student> {
+	
+	Student getLocked(Integer userId);
 
 
     int lockUser(@Param("userId") Integer userId);
     int lockUser(@Param("userId") Integer userId);
 
 

+ 0 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -481,8 +481,6 @@ public class StudentManageServiceImpl implements StudentManageService {
             student.setUpdateTime(date);
             student.setUpdateTime(date);
             student.setCreateTime(date);
             student.setCreateTime(date);
             student.setUserType("STUDENT");
             student.setUserType("STUDENT");
-            student.setServiceTag(1);
-            student.setOperatingTag(1);
             HttpResponseResult<Integer> result = sysUserFeignService.addUser(student);
             HttpResponseResult<Integer> result = sysUserFeignService.addUser(student);
             student.setId(result.getData());
             student.setId(result.getData());
 
 

+ 137 - 92
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1,15 +1,97 @@
 package com.ym.mec.biz.service.impl;
 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.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUserRole;
 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.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.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupModel;
 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.im.ImFeignService;
 import com.ym.mec.thirdparty.eseal.ESealPlugin;
 import com.ym.mec.thirdparty.eseal.ESealPlugin;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 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.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
 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
 @Service
 public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
 public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
@@ -216,81 +284,58 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     public StudentRegistration addStudent(StudentRegistration studentRegistration) throws Exception {
     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;
         return studentRegistration;
     }
     }
 
 

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -24,6 +24,12 @@
         FROM student
         FROM student
         WHERE user_id_ = #{id}
         WHERE user_id_ = #{id}
     </select>
     </select>
+    
+    <select id="getLocked" resultMap="Student">
+        SELECT *
+        FROM student
+        WHERE user_id_ = #{id} for update
+    </select>
 
 
     <!-- 全查询 -->
     <!-- 全查询 -->
     <select id="findAll" resultMap="Student">
     <select id="findAll" resultMap="Student">

+ 5 - 8
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupRegisterController.java

@@ -41,17 +41,14 @@ public class MusicGroupRegisterController extends BaseController {
         if (musicGroup == null) {
         if (musicGroup == null) {
             return failed("乐团信息不存在");
             return failed("乐团信息不存在");
         }
         }
-        if(studentRegistration.getId() != null){
-            return  succeed(studentRegistrationService.updateStudent(studentRegistration));
-        }
-
-        StudentRegistration hasReg = studentRegistrationService.getByPhoneAndMusicGroupId(studentRegistration.getMusicGroupId(), studentRegistration.getParentsPhone());
-        if (hasReg != null) {
-            return failed("该乐团您已报名");
-        }
+        
         if (DateUtil.daysBetween(musicGroup.getApplyExpireDate(),date) > 1) {
         if (DateUtil.daysBetween(musicGroup.getApplyExpireDate(),date) > 1) {
             return failed("乐团已截止报名");
             return failed("乐团已截止报名");
         }
         }
+        
+        if(studentRegistration.getId() != null){
+            return  succeed(studentRegistrationService.updateStudent(studentRegistration));
+        }
 
 
         if (musicGroup.getStatus().equals(MusicGroupStatusEnum.PAY)) {
         if (musicGroup.getStatus().equals(MusicGroupStatusEnum.PAY)) {
             studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);
             studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);