|
@@ -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());
|