Browse Source

Merge branch 'zouxuan-2022-05-27' of http://git.dayaedu.com/yonge/mec into master_saas

zouxuan 3 years ago
parent
commit
60374fdc95

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -120,6 +120,13 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 * @Date: 2019/9/17
 	 * @Date: 2019/9/17
 	 * 批量插入课程计划
 	 * 批量插入课程计划
 	 */
 	 */
+	void batchAddCourseSchedule1(List<CourseSchedule> courseSchedules);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/17
+	 * 批量插入课程计划
+	 */
 	void batchAddCourseSchedule(List<CourseSchedule> courseSchedules);
 	void batchAddCourseSchedule(List<CourseSchedule> courseSchedules);
 
 
 	/**
 	/**

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MemberRankSettingService.java

@@ -36,6 +36,14 @@ public interface MemberRankSettingService extends BaseService<Integer, MemberRan
      */
      */
     boolean orderCallback(StudentPaymentOrder studentPaymentOrder);
     boolean orderCallback(StudentPaymentOrder studentPaymentOrder);
 
 
+    /**
+     * 订单回调
+     *
+     * @param studentPaymentOrder
+     * @return
+     */
+    boolean liveBuyOrderCallback(StudentPaymentOrder studentPaymentOrder);
+
     HttpResponseResult activeBuy(MemberPayParamDto memberPayParamDto) throws Exception;
     HttpResponseResult activeBuy(MemberPayParamDto memberPayParamDto) throws Exception;
 
 
     HttpResponseResult<Integer> checkActiveBuy(MemberPayParamDto memberPayParamDto);
     HttpResponseResult<Integer> checkActiveBuy(MemberPayParamDto memberPayParamDto);

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1072,6 +1072,17 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 
 	@Override
 	@Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
+    public void batchAddCourseSchedule1(List<CourseSchedule> courseSchedules) {
+        if (Objects.isNull(courseSchedules) && courseSchedules.size() <= 0) {
+            throw new BizException("参数错误!");
+        }
+//        checkNewCourseSchedules(courseSchedules, false,false);
+        createCourseScheduleName(courseSchedules);
+        courseScheduleDao.batchAddCourseSchedules(courseSchedules);
+    }
+
+	@Override
+    @Transactional(rollbackFor = Exception.class)
     public void batchAddCourseSchedule(List<CourseSchedule> courseSchedules) {
     public void batchAddCourseSchedule(List<CourseSchedule> courseSchedules) {
         if (Objects.isNull(courseSchedules) && courseSchedules.size() <= 0) {
         if (Objects.isNull(courseSchedules) && courseSchedules.size() <= 0) {
             throw new BizException("参数错误!");
             throw new BizException("参数错误!");

+ 92 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -307,6 +307,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         studentPaymentOrder.setOrganId(sysUser.getOrganId());
         studentPaymentOrder.setOrganId(sysUser.getOrganId());
         studentPaymentOrder.setMemo("小小训练营云教练购买");
         studentPaymentOrder.setMemo("小小训练营云教练购买");
         studentPaymentOrder.setGroupType(GroupType.LIVE_BUY);
         studentPaymentOrder.setGroupType(GroupType.LIVE_BUY);
+        studentPaymentOrder.setType(OrderTypeEnum.LIVE_BUY);
         studentPaymentOrder.setActivityId(activityId.toString());
         studentPaymentOrder.setActivityId(activityId.toString());
         studentPaymentOrder.setActivityBuyNum(1);
         studentPaymentOrder.setActivityBuyNum(1);
         studentPaymentOrder.setMusicGroupId(memberPayParamDto.getLiveId());
         studentPaymentOrder.setMusicGroupId(memberPayParamDto.getLiveId());
@@ -585,6 +586,97 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 
 
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+    public boolean liveBuyOrderCallback(StudentPaymentOrder studentPaymentOrder) {
+        //查询原定的是否已处理
+        StudentPaymentOrder orignStudentPaymentOrder = studentPaymentOrderService.lockOrder(studentPaymentOrder.getId());
+        if (orignStudentPaymentOrder == null) {
+            return false;
+        }
+        if (orignStudentPaymentOrder.getStatus() != DealStatusEnum.ING) {
+            return false;
+        }
+        Integer userId = studentPaymentOrder.getUserId();
+        Date nowDate = new Date();
+        // 更新订单信息
+        studentPaymentOrder.setUpdateTime(nowDate);
+        studentPaymentOrderService.update(studentPaymentOrder);
+
+        if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
+            //退还优惠券和余额
+            studentPaymentOrderService.returnBalanceAndCoupon(studentPaymentOrder, "直播购买云教练支付失败");
+            if(Objects.nonNull(studentPaymentOrder.getActivityId())){
+                //还原库存
+                liveGoodsService.addGoodsStock(1,null);
+            }
+            return true;
+        }
+
+        // 支付成功
+        if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
+            Student student = studentService.get(userId);
+            VipGroupActivity activity = vipGroupActivityDao.get(Integer.parseInt(studentPaymentOrder.getActivityId()));
+            //保存团练宝数据
+            CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
+            cloudTeacherOrder.setOrderId(studentPaymentOrder.getId());
+            cloudTeacherOrder.setLevel(1);
+            cloudTeacherOrder.setStatus(1);
+            cloudTeacherOrder.setType(activity.getPeriodEnum());
+            cloudTeacherOrder.setTime(studentPaymentOrder.getActivityBuyNum());
+            cloudTeacherOrder.setStudentId(studentPaymentOrder.getUserId());
+            cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
+            cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
+            cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
+            //赠送陪练课
+            ActivityUserMapper activityUserMapper = new ActivityUserMapper();
+            activityUserMapper.setTeacherId(student.getTeacherId());
+            activityUserMapper.setPaymentOrderId(studentPaymentOrder.getId());
+            activityUserMapper.setUserId(studentPaymentOrder.getUserId());
+            activityUserMapper.setActivityId(activity.getId());
+            activityUserMapper.setActualPrice(BigDecimal.ZERO);
+            activityUserMapper.setGivePracticeFlag(1);
+            activityUserMapper.setReturnFee(false);
+            activityUserMapperDao.insert(activityUserMapper);
+            //赠送训练营
+            TempLittleArtistTrainingCampUserRelation tempLittleArtistTrainingCamp = new TempLittleArtistTrainingCampUserRelation();
+            tempLittleArtistTrainingCamp.setUserId(studentPaymentOrder.getUserId());
+            tempLittleArtistTrainingCamp.setState("NOT_APPLY");
+            tempLittleArtistTrainingCamp.setCreateTime(nowDate);
+            tempLittleArtistTrainingCampUserRelationDao.insert(tempLittleArtistTrainingCamp);
+            //生成订单详情
+            StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
+            studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
+            studentPaymentOrderDetail.setType(OrderDetailTypeEnum.CLOUD_TEACHER);
+            studentPaymentOrderDetail.setGoodsIdList("1");
+            studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount());
+            studentPaymentOrderDetail.setTenantId(studentPaymentOrder.getTenantId());
+            studentPaymentOrderDetail.setCreateTime(nowDate);
+            studentPaymentOrderDetail.setUpdateTime(nowDate);
+            studentPaymentOrderDetailDao.insert(studentPaymentOrderDetail);
+
+            Map<Integer, String> phoneMaps = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(userId.toString()));
+            String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
+            StringBuffer pushUrl = new StringBuffer(baseApiUrl).append("/#/artistRegistration");
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.GOOD_HABITS_TRAINING_CAMP_EXPERIENCE_QUALIFICATION_SMS,phoneMaps,
+                    null,0,"",null, HttpUtil.getSortUrl(pushUrl.toString()));
+
+            StringBuffer notifyUrl = new StringBuffer("8?").append(baseApiUrl).append("/#/artistRegistration");
+            Map<Integer, String> userIdMaps = new HashMap<>(1);
+            userIdMaps.put(userId, userId.toString());
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.GOOD_HABITS_TRAINING_CAMP_EXPERIENCE_QUALIFICATION_PUSH,userIdMaps,
+                    null,0,notifyUrl.toString(),"STUDENT");
+        }
+        // 插入交易明细
+        sysUserCashAccountDetailService.saveSysUserCashAccountDetail(studentPaymentOrder, "直播购买云教练");
+        try {
+            contractService.transferProduceContract(userId, null, CourseViewTypeEnum.MEMBER_FEE);
+        } catch (Exception e) {
+            logger.error("产品协议生成失败", e);
+        }
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public boolean orderCallback(StudentPaymentOrder studentPaymentOrder) {
     public boolean orderCallback(StudentPaymentOrder studentPaymentOrder) {
         //查询原定的是否已处理
         //查询原定的是否已处理
         StudentPaymentOrder orignStudentPaymentOrder = studentPaymentOrderService.lockOrder(studentPaymentOrder.getId());
         StudentPaymentOrder orignStudentPaymentOrder = studentPaymentOrderService.lockOrder(studentPaymentOrder.getId());

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -493,6 +493,9 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         } else if (order.getType().equals(OrderTypeEnum.ACTIVITY)) {
         } else if (order.getType().equals(OrderTypeEnum.ACTIVITY)) {
             //购买活动
             //购买活动
             practiceGroupService.activityOrderCallback(order);
             practiceGroupService.activityOrderCallback(order);
+        } else if (order.getType().equals(OrderTypeEnum.LIVE_BUY)) {
+            //直播课购买回调
+            memberRankSettingService.liveBuyOrderCallback(order);
         }
         }
     }
     }
 
 

+ 13 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampServiceImpl.java

@@ -39,6 +39,7 @@ import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.util.*;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.BiConsumer;
 import java.util.function.Function;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -431,11 +432,19 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
             //报名人数
             //报名人数
             int totalUserNum = userStrList.size();
             int totalUserNum = userStrList.size();
             BigDecimal applyNum = new BigDecimal(totalUserNum + "");
             BigDecimal applyNum = new BigDecimal(totalUserNum + "");
+            //修改修改关系表 imGroup
+            BiConsumer<String, List<String>> updateGroup = (groupId, list) -> tempLittleArtistTrainingCampUserRelationService.update(Wrappers.<TempLittleArtistTrainingCampUserRelation>lambdaUpdate()
+                    .set(TempLittleArtistTrainingCampUserRelation::getImGroupId, groupId)
+                    .eq(TempLittleArtistTrainingCampUserRelation::getActivityId, camp.getId())
+                    .in(TempLittleArtistTrainingCampUserRelation::getUserId, list)
+                    .isNull(TempLittleArtistTrainingCampUserRelation::getImGroupId));
             //如果人数小于最大人数 则直接分组
             //如果人数小于最大人数 则直接分组
             if (maxUserNum.intValue() >= applyNum.intValue()) {
             if (maxUserNum.intValue() >= applyNum.intValue()) {
                 //分组
                 //分组
                 String groupId = imGroupService.createGroup(userStrList, camp.getName() + "-1群", groupType);
                 String groupId = imGroupService.createGroup(userStrList, camp.getName() + "-1群", groupType);
                 imGroupIds.add(groupId);
                 imGroupIds.add(groupId);
+                //修改关系表
+                updateGroup.accept(groupId, userStrList);
             } else {
             } else {
                 //分组数 ->报名人数 ➗ 每组最大人数 有小数就向上取整 1.01 -> 2
                 //分组数 ->报名人数 ➗ 每组最大人数 有小数就向上取整 1.01 -> 2
                 BigDecimal groupNum = applyNum.divide(maxUserNum, 0, RoundingMode.UP);
                 BigDecimal groupNum = applyNum.divide(maxUserNum, 0, RoundingMode.UP);
@@ -447,12 +456,8 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
                 AtomicInteger i = new AtomicInteger(1);
                 AtomicInteger i = new AtomicInteger(1);
                 partition.forEach(list -> {
                 partition.forEach(list -> {
                     String groupId = imGroupService.createGroup(list, camp.getName() + "-" + i.get() + "群", groupType);
                     String groupId = imGroupService.createGroup(list, camp.getName() + "-" + i.get() + "群", groupType);
-                    //修改
-                    tempLittleArtistTrainingCampUserRelationService.update(Wrappers.<TempLittleArtistTrainingCampUserRelation>lambdaUpdate()
-                            .set(TempLittleArtistTrainingCampUserRelation::getImGroupId, groupId)
-                            .eq(TempLittleArtistTrainingCampUserRelation::getActivityId, camp.getId())
-                            .in(TempLittleArtistTrainingCampUserRelation::getUserId, list)
-                            .isNull(TempLittleArtistTrainingCampUserRelation::getImGroupId));
+                    updateGroup.accept(groupId, list);
+                    //修改关系表
                     imGroupIds.add(groupId);
                     imGroupIds.add(groupId);
                     i.getAndIncrement();
                     i.getAndIncrement();
                 });
                 });
@@ -471,12 +476,12 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
     public void pushStartTrain() {
     public void pushStartTrain() {
         //查询学员id  对应的训练营名称
         //查询学员id  对应的训练营名称
         List<BaseVo> baseVos = baseMapper.queryStartTrainInfo(LocalDate.now().toString());
         List<BaseVo> baseVos = baseMapper.queryStartTrainInfo(LocalDate.now().toString());
-        if(CollectionUtils.isEmpty(baseVos)){
+        if (CollectionUtils.isEmpty(baseVos)) {
             return;
             return;
         }
         }
         Map<String, List<BaseVo>> pushUserList = WrapperUtil.groupList(baseVos, BaseVo::getName);
         Map<String, List<BaseVo>> pushUserList = WrapperUtil.groupList(baseVos, BaseVo::getName);
         pushUserList.forEach((imGroupName, list) -> {
         pushUserList.forEach((imGroupName, list) -> {
-            Map<Integer, String> push= new HashMap<>();
+            Map<Integer, String> push = new HashMap<>();
             for (BaseVo obj : list) {
             for (BaseVo obj : list) {
                 push.put(obj.getId(), obj.getId().toString());
                 push.put(obj.getId(), obj.getId().toString());
             }
             }

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

@@ -2782,7 +2782,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
                     List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(), CourseSchedule.class);
                     List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(), CourseSchedule.class);
                     classGroup.setTotalClassTimes(courseSchedules.size());
                     classGroup.setTotalClassTimes(courseSchedules.size());
 
 
-                    courseScheduleService.batchAddCourseSchedule(courseSchedules);
+                    courseScheduleService.batchAddCourseSchedule1(courseSchedules);
 
 
                     //考勤信息
                     //考勤信息
                     List<TeacherAttendance> teacherAttendances = new ArrayList<>();
                     List<TeacherAttendance> teacherAttendances = new ArrayList<>();