Browse Source

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

zouxuan 5 năm trước cách đây
mục cha
commit
c7f3a8dee9

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/CoursesGroupService.java

@@ -20,7 +20,7 @@ public interface CoursesGroupService extends BaseService<Long, CoursesGroup> {
      * @param courseGroupCreateInfo: 课程组创建信息
      * @return void
      */
-    void createCourseGroup(CourseGroupCreateDto courseGroupCreateInfo);
+    HttpResponseResult createCourseGroup(CourseGroupCreateDto courseGroupCreateInfo);
 
     /**
      * @describe 获取教师课程组列表
@@ -59,7 +59,7 @@ public interface CoursesGroupService extends BaseService<Long, CoursesGroup> {
      */
     HttpResponseResult buyCourseGroup(Integer userId, Long courseGroupId, boolean isUseBalancePayment);
 
-    void orderCallback(StudentPaymentOrder studentPaymentOrder);
+    HttpResponseResult orderCallback(StudentPaymentOrder studentPaymentOrder);
 
     /**
      * @describe 无学生课程组提醒

+ 33 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java

@@ -26,9 +26,11 @@ import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
@@ -95,7 +97,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
-    public void createCourseGroup(CourseGroupCreateDto courseGroupCreateInfo) {
+    public HttpResponseResult createCourseGroup(CourseGroupCreateDto courseGroupCreateInfo) {
         CoursesGroup courseGroup = courseGroupCreateInfo.getCoursesGroup();
         CourseGenerateDto courseCycleInfo = courseGroupCreateInfo.getCourseCycleInfo();
         if(Objects.isNull(courseGroup.getName())|| StringUtils.isBlank(courseGroup.getName())){
@@ -121,6 +123,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 
         //总课程时长
         Integer totalCourseTime=courseCycleInfo.getCourseCount()*courseCycleInfo.getSingleClassMinutes();
+
         sysTenantAccountService.update(courseGroup.getTeacherId(), -totalCourseTime, "", SysTenantAccountDetail.TransType.CONSUME, "",BigDecimal.ZERO,"课程组创建");
 
         Teacher teacher = teacherDao.get(courseGroup.getTeacherId());
@@ -140,7 +143,14 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
             newCourse.setStatus(CourseStatusEnum.NOT_START);
             newCourse.setName(courseGroup.getName());
         }
-        courseScheduleService.checkNewCourseSchedules(newCourses,false);
+        try {
+            courseScheduleService.checkNewCourseSchedules(newCourses,false);
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            String errMessage;
+            errMessage="抱歉啦,当前所选时段组合,「" + teacher.getRealName() + "」老师已被预约,请重新选择时段或更换老师后重试。";
+            return BaseController.failed(HttpStatus.FOUND, errMessage);
+        }
 
         CourseSchedule firstCourseSchedule = newCourses.stream().min(Comparator.comparing(CourseSchedule::getStartClassTime)).get();
         if(firstCourseSchedule.getStartClassTime().before(now)){
@@ -221,6 +231,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
         }
         courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
         teacherAttendanceDao.batchInsert(teacherAttendances);
+        return BaseController.succeed();
     }
 
     @Override
@@ -389,8 +400,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
         studentPaymentOrder.setVersion(0);
 
         if(amount.compareTo(BigDecimal.ZERO)<=0){
-            this.orderCallback(studentPaymentOrder);
-            return BaseController.succeed();
+            return this.orderCallback(studentPaymentOrder);
         }else{
             studentPaymentOrderService.insert(studentPaymentOrder);
 
@@ -465,11 +475,11 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
-    public void orderCallback(StudentPaymentOrder order) {
+    public HttpResponseResult orderCallback(StudentPaymentOrder order) {
         if(order.getExpectAmount().compareTo(BigDecimal.ZERO)>0){
             StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.get(order.getId());
             if(!studentPaymentOrder.getStatus().equals(DealStatusEnum.ING)){
-                return;
+                return BaseController.succeed();
             }
             SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(order.getUserId());
             List<StudentPaymentOrder> userGroupOrders = studentPaymentOrderDao.findUserGroupOrders(order.getUserId(), order.getMusicGroupId(), order.getGroupType(),null);
@@ -484,7 +494,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
                     order.setMemo("重复支付,进入余额");
                 }
                 studentPaymentOrderDao.update(order);
-                return;
+                return BaseController.succeed();
             }
 
             Long ingOrderNum=statusOrderNumMap.get(DealStatusEnum.ING);
@@ -493,7 +503,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
                     sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课支付失败,退还余额");
                 }
                 studentPaymentOrderDao.update(order);
-                return;
+                return BaseController.succeed();
             }
 
             if(order.getStatus().equals(DealStatusEnum.SUCCESS)){
@@ -507,7 +517,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
                 coursesGroup.setStatus(GroupStatusEnum.CANCEL);
                 coursesGroupDao.update(coursesGroup);
                 groupService.deleteGroupOtherInfo(order.getMusicGroupId(),GroupType.PRACTICE);
-                return;
+                return BaseController.succeed();
             }
             studentPaymentOrderDao.update(order);
 
@@ -552,7 +562,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 
                 sysUserCashAccountService.updateBalance(order.getUserId(), order.getExpectAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "支付成功,但课程组不处于正常状态");
 
-                return;
+                return BaseController.succeed();
             }
         }
         CoursesGroup coursesGroup = coursesGroupDao.get(Long.valueOf(order.getMusicGroupId()));
@@ -596,9 +606,18 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
         courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
 
         try {
-//            contractService.transferPracticeCoursesContract(order.getUserId(),classGroup.getTotalClassTimes(),practiceGroup.getCoursesStartDate(),practiceGroup.getCoursesExpireDate(),order.getExpectAmount());
+            courseScheduleService.checkNewCourseSchedules(groupNotStartCourses,false);
         } catch (Exception e) {
-            LOGGER.error("对外课程组[{}]购买协议错误:{}",order.getMusicGroupId(),e.getMessage(),e.getMessage());
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            String errMessage;
+
+            String courseName=e.getMessage().substring(e.getMessage().indexOf(")-")+2);
+            courseName = courseName.substring(0,courseName.indexOf("("));
+            errMessage="抱歉啦,当前所选时段组合,与您现有课程「";
+            errMessage+=courseName;
+            errMessage+="」时段冲突,请选择其他时段重试。";
+
+            return BaseController.failed(HttpStatus.FOUND, errMessage);
         }
 
         List<ImGroupMember> imGroupMemberList = new ArrayList<>();
@@ -607,6 +626,8 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
         ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
         // 创建群组
         imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+
+        return BaseController.succeed();
     }
 
     @Override

+ 8 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantPaymentOrderServiceImpl.java

@@ -111,19 +111,18 @@ public class TenantPaymentOrderServiceImpl extends BaseServiceImpl<Long, TenantP
 		List<TenantPaymentOrder> orderList = tenantPaymentOrderDao.queryByUserId(userId);
 		if (orderList != null && orderList.size() > 0) {
 			for (TenantPaymentOrder po : orderList) {
-				if (po.getStatus() == DealStatusEnum.ING || po.getStatus() == DealStatusEnum.SUCCESS) {
-					++purchaseTimes;
+				// 是否满足条件
+				if (tenantEntryActivities.getSuitableUser() == SuitableUser.NEW) {
+					if (po.getStatus() == DealStatusEnum.ING) {
+						throw new BizException("您存在'处理中' 的订单,请稍后重试(最多需等待30分钟)");
+					}
+					if (po.getStatus() == DealStatusEnum.SUCCESS) {
+						throw new BizException("您已参与过当前活动,每人只能参与一次");
+					}
 				}
 			}
 		}
 
-		// 是否满足条件
-		if (tenantEntryActivities.getSuitableUser() == SuitableUser.NEW) {
-			if (purchaseTimes > 0) {
-				throw new BizException("您已参与过当前活动,每人只能参与一次");
-			}
-		}
-
 		TenantPaymentOrder tenantPaymentOrder = new TenantPaymentOrder();
 		tenantPaymentOrder.setUserId(userId);
 		tenantPaymentOrder.setTransMinutes(tenantEntryActivities.getPurchaseMinutes());

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

@@ -2731,7 +2731,27 @@
         )
     </select>
     <select id="findGroupNotStartCourses" resultMap="CourseSchedule">
-        SELECT * FROM course_schedule WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} AND music_group_id_ = #{groupId} AND CONCAT(class_date_, ' ', start_class_time_)&gt;NOW()
+        SELECT
+            id_,
+            group_type_,
+            music_group_id_,
+            class_group_id_,
+            status_,
+            subsidy_,
+            class_date_,
+            CONCAT(class_date_, ' ', start_class_time_) start_class_time_,
+            CONCAT(class_date_, ' ', end_class_time_)   end_class_time_,
+            teacher_id_,
+            actual_teacher_id_,
+            create_time_,
+            update_time_,
+            teach_mode_,
+            type_,
+            name_,
+            student_num_,
+            leave_student_num_,
+            schoole_id_
+        FROM course_schedule WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} AND music_group_id_ = #{groupId} AND CONCAT(class_date_, ' ', start_class_time_)&gt;NOW()
     </select>
     <select id="getSubjectNameById" resultType="java.lang.String">
         SELECT GROUP_CONCAT(DISTINCT s.name_) FROM course_schedule cs

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

@@ -198,7 +198,7 @@
 			AND cs.group_type_ = 'COMM'
 			AND cg.student_num_ = 0
 			AND csg.status_='NORMAL'
-		GROUP BY csg.id_ HAVING MAX(cs.class_date_)&lt;=DATE_FORMAT(#{startDate}, '%Y-%m-%d')
+		GROUP BY csg.id_ HAVING MIN(cs.class_date_)&lt;=DATE_FORMAT(#{startDate}, '%Y-%m-%d')
     </select>
     <select id="findNoCoursesGroups" resultMap="CoursesGroup">
 		SELECT

+ 1 - 2
mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseGroupController.java

@@ -53,8 +53,7 @@ public class CourseGroupController extends BaseController {
         }
         courseGroupCreateInfo.getCoursesGroup().setOrganId(teacher.getOrganId());
         courseGroupCreateInfo.getCoursesGroup().setTeacherId(sysUser.getId());
-        coursesGroupService.createCourseGroup(courseGroupCreateInfo);
-        return succeed();
+        return coursesGroupService.createCourseGroup(courseGroupCreateInfo);
     }
 
     @ApiOperation(value = "获取课程组列表")

+ 2 - 1
mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -82,7 +82,7 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "修改学员信息")
     @PostMapping("/studentUpdate")
     @PreAuthorize("@pcs.hasPermissions('studentManage/studentUpdate')")
-    public Object studentUpdate(Integer id, String phone, String username, Integer gender, String realName, Date birthdate,String nation){
+    public Object studentUpdate(Integer id, String phone, String username, Integer gender, String realName, Date birthdate,String nation,Integer organId){
         SysUser sysUser = new SysUser();
         sysUser.setId(id);
         sysUser.setPhone(phone);
@@ -91,6 +91,7 @@ public class StudentManageController extends BaseController {
         sysUser.setRealName(realName);
         sysUser.setBirthdate(birthdate);
         sysUser.setNation(nation);
+        sysUser.setOrganId(organId);
         return succeed(studentManageService.studentUpdate(sysUser));
     }