Przeglądaj źródła

小小训练营

zouxuan 3 lat temu
rodzic
commit
5efcc0d5fd

+ 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);
 
+    /**
+     * 订单回调
+     *
+     * @param studentPaymentOrder
+     * @return
+     */
+    boolean liveBuyOrderCallback(StudentPaymentOrder studentPaymentOrder);
+
     HttpResponseResult activeBuy(MemberPayParamDto memberPayParamDto) throws Exception;
 
     HttpResponseResult<Integer> checkActiveBuy(MemberPayParamDto memberPayParamDto);

+ 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.setMemo("小小训练营云教练购买");
         studentPaymentOrder.setGroupType(GroupType.LIVE_BUY);
+        studentPaymentOrder.setType(OrderTypeEnum.LIVE_BUY);
         studentPaymentOrder.setActivityId(activityId.toString());
         studentPaymentOrder.setActivityBuyNum(1);
         studentPaymentOrder.setMusicGroupId(memberPayParamDto.getLiveId());
@@ -585,6 +586,97 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 
     @Override
     @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) {
         //查询原定的是否已处理
         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)) {
             //购买活动
             practiceGroupService.activityOrderCallback(order);
+        } else if (order.getType().equals(OrderTypeEnum.LIVE_BUY)) {
+            //直播课购买回调
+            memberRankSettingService.liveBuyOrderCallback(order);
         }
     }