|
@@ -14,10 +14,7 @@ import com.yonge.cooleshow.biz.dal.dto.LiveCourseGroupDto;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.LiveCourseGroupDto.CoursePlanDto;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.req.OrderRefundReq;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
|
|
|
-import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupSearch;
|
|
|
-import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupStudentCourseSearch;
|
|
|
-import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupStudentSearch;
|
|
|
-import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.search.*;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.*;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.*;
|
|
|
import com.yonge.cooleshow.biz.dal.service.*;
|
|
@@ -90,6 +87,9 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
|
|
|
@Autowired
|
|
|
private SysMessageService sysMessageService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private UserOrderRefundService userOrderRefundService;
|
|
|
+
|
|
|
@Override
|
|
|
public CourseGroupDao getDao() {
|
|
|
return this.baseMapper;
|
|
@@ -777,8 +777,8 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
|
|
|
Map<Long, String> teacherReceivers = new HashMap<>();
|
|
|
teacherReceivers.put(teacherInfo.getId(), teacherInfo.getPhone());
|
|
|
sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, studentBuyLive,
|
|
|
- teacherReceivers, null, 0, studentBuyLiveUrl +courseGroup.getId() , ClientEnum.TEACHER.getCode(),
|
|
|
- studentInfo.getUsername(), courseGroup.getName() );
|
|
|
+ teacherReceivers, null, 0, studentBuyLiveUrl + courseGroup.getId(), ClientEnum.TEACHER.getCode(),
|
|
|
+ studentInfo.getUsername(), courseGroup.getName());
|
|
|
log.info("buyLiveCourseSuccess buyLiveSendMessage STUDENT_BUY_LIVE ok");
|
|
|
|
|
|
//短信-消息推送-老师端-通知老师有学生购买课程-无需跳转到APP
|
|
@@ -851,8 +851,52 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 学生购买直播课程-成功-回调
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public void refundSuccess(UserOrderDetailVo userOrderDetailVo) {
|
|
|
+ public void refundSuccess(UserOrderDetailVo orderParam) {
|
|
|
+ log.info("refundSuccess");
|
|
|
+ String orderNo = orderParam.getOrderNo();
|
|
|
+ List<CourseScheduleStudentPayment> studentPaymentList = courseScheduleStudentPaymentService.list(Wrappers.<CourseScheduleStudentPayment>lambdaQuery()
|
|
|
+ .eq(CourseScheduleStudentPayment::getOrderNo, orderNo)
|
|
|
+ );
|
|
|
+ CourseScheduleStudentPayment studentPayment;
|
|
|
+ if (CollectionUtils.isEmpty(studentPaymentList)) {
|
|
|
+ log.info("buyLiveCourseSuccess >>> 订单不存在!orderParam: {}", JSON.toJSONString(orderParam));
|
|
|
+ throw new BizException("订单不存在");
|
|
|
+ } else {
|
|
|
+ studentPayment = studentPaymentList.get(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 取消老师课酬
|
|
|
+ cancelTeacherSalary(studentPayment.getUserId(), studentPayment.getCourseGroupId());
|
|
|
+
|
|
|
+ // 删除学生购买记录
|
|
|
+ buyLiveCourseCancel(orderParam);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 取消老师课酬
|
|
|
+ *
|
|
|
+ * @param userId 学生id
|
|
|
+ * @param courseGroupId 课程组id
|
|
|
+ */
|
|
|
+ private void cancelTeacherSalary(Long userId, Long courseGroupId) {
|
|
|
+ List<CourseScheduleTeacherSalary> list = courseScheduleTeacherSalaryService.lambdaQuery()
|
|
|
+ .eq(CourseScheduleTeacherSalary::getStudentId, userId)
|
|
|
+ .eq(CourseScheduleTeacherSalary::getCourseGroupId, courseGroupId)
|
|
|
+ .list();
|
|
|
+ list = list.stream().filter(csts ->
|
|
|
+ TeacherSalaryEnum.NOT_START.getCode().equals(csts.getStatus())
|
|
|
+ ).peek(csts -> csts.setStatus(CourseScheduleEnum.CANCEL.getCode()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isEmpty(list)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ courseScheduleTeacherSalaryService.saveOrUpdateBatch(list);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -861,6 +905,21 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public IPage<CourseGroupPracticeVo> selectPracticeGroup(IPage<CourseGroupPracticeVo> page, CourseGroupSearch search) {
|
|
|
+ return baseMapper.selectPracticeGroup(page, search);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<CourseGroupPracticeDetailVo> selectPracticeGroupDetail(IPage<CourseGroupPracticeDetailVo> page, CourseGroupDetailSearch search) {
|
|
|
+ return baseMapper.selectPracticeGroupDetail(page, search);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<CourseGroupLiveVo> selectLiveGroup(IPage<CourseGroupLiveVo> page, CourseGroupSearch search) {
|
|
|
+ return baseMapper.selectLiveGroup(page,search);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 定时将符合开售日期的未开售的直播课课程组修改为报名中状态
|
|
|
*/
|
|
@@ -921,23 +980,15 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
|
|
|
Map<Long, String> receivers = new HashMap<>();
|
|
|
receivers.put(user.getId(), user.getPhone());
|
|
|
sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_LIVE_COMPLETION_FAIL,
|
|
|
- receivers, null, 0, null, null,
|
|
|
- courseGroup.getName());
|
|
|
+ receivers, null, 0, null, null,
|
|
|
+ courseGroup.getName());
|
|
|
} catch (Exception e) {
|
|
|
- log.warn("直播课成课失败短信发送失败,{}",e.getMessage());
|
|
|
+ log.warn("直播课成课失败短信发送失败,{}", e.getMessage());
|
|
|
}
|
|
|
+ sendMessage(courseGroup);
|
|
|
+
|
|
|
+ refend(courseGroup);
|
|
|
|
|
|
- // 发推送
|
|
|
- try {
|
|
|
- SysUser user = sysUserFeignService.queryUserById(courseGroup.getTeacherId());
|
|
|
- Map<Long, String> receivers = new HashMap<>();
|
|
|
- receivers.put(user.getId(), user.getPhone());
|
|
|
- sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.LIVE_COMPLETION_FAIL,
|
|
|
- receivers, null, 0, null, ClientEnum.TEACHER.getCode(),
|
|
|
- courseGroup.getName());
|
|
|
- } catch (Exception e) {
|
|
|
- log.warn("直播课成课失败推送发送失败,{}",e.getMessage());
|
|
|
- }
|
|
|
}
|
|
|
this.updateById(courseGroup);
|
|
|
} catch (Exception ignored) {
|
|
@@ -945,5 +996,52 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 直播课成课失败退款
|
|
|
+ *
|
|
|
+ * @param courseGroup
|
|
|
+ */
|
|
|
+ private void refend(CourseGroup courseGroup) {
|
|
|
+ // 退款
|
|
|
+ List<String> orderNoList = courseScheduleStudentPaymentService.getOrderNoByGroupId(courseGroup.getId());
|
|
|
+
|
|
|
+ for (String orderNo : orderNoList) {
|
|
|
+ try {
|
|
|
+ userOrderRefundService.orderRefund(orderNo, "直播课成课失败退款");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("直播课成课失败退款 退款失败,退款订单号 {}", orderNo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 直播课成课失败发送消息
|
|
|
+ *
|
|
|
+ * @param courseGroup 课程组
|
|
|
+ */
|
|
|
+ private void sendMessage(CourseGroup courseGroup) {
|
|
|
+ // 直播课成课失败通知
|
|
|
+ // 发短信
|
|
|
+ try {
|
|
|
+ SysUser user = sysUserFeignService.queryUserById(courseGroup.getTeacherId());
|
|
|
+ Map<Long, String> receivers = new HashMap<>();
|
|
|
+ receivers.put(user.getId(), user.getPhone());
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_LIVE_COMPLETION_FAIL,
|
|
|
+ receivers, null, 0, null, null, courseGroup.getName());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("直播课成课失败短信发送失败,{}", e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 发推送
|
|
|
+ try {
|
|
|
+ SysUser user = sysUserFeignService.queryUserById(courseGroup.getTeacherId());
|
|
|
+ Map<Long, String> receivers = new HashMap<>();
|
|
|
+ receivers.put(user.getId(), user.getPhone());
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.LIVE_COMPLETION_FAIL,
|
|
|
+ receivers, null, 0, null, ClientEnum.TEACHER.getCode(), courseGroup.getName());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("直播课成课失败推送发送失败,{}", e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|