|
|
@@ -1834,26 +1834,44 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public StudentVipGroupDetailDto getVipGroupShowDetail(Long vipGroupId) {
|
|
|
- if(Objects.isNull(vipGroupId)){
|
|
|
- throw new BizException("请指定vip课程");
|
|
|
- }
|
|
|
- VipGroup vipGroup = vipGroupDao.get(vipGroupId);
|
|
|
- if(Objects.isNull(vipGroup)){
|
|
|
- throw new BizException("未找到指定课程");
|
|
|
- }
|
|
|
- StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(vipGroupId);
|
|
|
- if(StringUtils.isNotEmpty(vipGroup.getCourseSchedulesJson())){
|
|
|
- vipGroupDetail.setCourseSchedules(JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class));
|
|
|
- List<CourseSchedule> collect = vipGroupDetail.getCourseSchedules().stream()
|
|
|
- .sorted(Comparator.comparing(CourseSchedule::getStartClassTime))
|
|
|
- .collect(Collectors.toList());
|
|
|
- vipGroupDetail.setCourseSchedules(collect);
|
|
|
- vipGroupDetail.setTotalClassTimes(collect.size());
|
|
|
+ public StudentVipGroupDetailDto getVipGroupShowDetail(Long groupId,String groupType) {
|
|
|
+ if(Objects.isNull(groupId)){
|
|
|
+ throw new BizException("请指定课程组");
|
|
|
}
|
|
|
+ if("PRACTICE".equals(groupType)){
|
|
|
+ PracticeGroup practiceGroup = practiceGroupService.get(groupId);
|
|
|
+ if(Objects.isNull(practiceGroup)){
|
|
|
+ throw new BizException("未找到指定课程组");
|
|
|
+ }
|
|
|
+ StudentVipGroupDetailDto vipGroupDetail = practiceGroupService.getPracticeGroupDetail(groupId);
|
|
|
+ if(StringUtils.isNotEmpty(practiceGroup.getCourseScheduleJson())){
|
|
|
+ vipGroupDetail.setCourseSchedules(JSON.parseArray(practiceGroup.getCourseScheduleJson(),CourseSchedule.class));
|
|
|
+ List<CourseSchedule> collect = vipGroupDetail.getCourseSchedules().stream()
|
|
|
+ .sorted(Comparator.comparing(CourseSchedule::getStartClassTime))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ vipGroupDetail.setCourseSchedules(collect);
|
|
|
+ vipGroupDetail.setTotalClassTimes(collect.size());
|
|
|
+ }
|
|
|
+ vipGroupDetail.setNumberOfClasses(practiceGroupService.countTeacherPracticeGroups(vipGroupDetail.getTeacherId()));
|
|
|
+ return vipGroupDetail;
|
|
|
+ }else {
|
|
|
+ VipGroup vipGroup = vipGroupDao.get(groupId);
|
|
|
+ if(Objects.isNull(vipGroup)){
|
|
|
+ throw new BizException("未找到指定课程");
|
|
|
+ }
|
|
|
+ StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(groupId);
|
|
|
+ if(StringUtils.isNotEmpty(vipGroup.getCourseSchedulesJson())){
|
|
|
+ vipGroupDetail.setCourseSchedules(JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class));
|
|
|
+ List<CourseSchedule> collect = vipGroupDetail.getCourseSchedules().stream()
|
|
|
+ .sorted(Comparator.comparing(CourseSchedule::getStartClassTime))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ vipGroupDetail.setCourseSchedules(collect);
|
|
|
+ vipGroupDetail.setTotalClassTimes(collect.size());
|
|
|
+ }
|
|
|
|
|
|
- vipGroupDetail.setNumberOfClasses(vipGroupDao.countTeacherVipGroups(vipGroupDetail.getTeacherId().longValue()));
|
|
|
- return vipGroupDetail;
|
|
|
+ vipGroupDetail.setNumberOfClasses(vipGroupDao.countTeacherVipGroups(vipGroupDetail.getTeacherId().longValue()));
|
|
|
+ return vipGroupDetail;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private BigDecimal getSalary(VipGroupSalarySettlementTypeDto salarySettlement,TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary,BigDecimal classNum){
|
|
|
@@ -2644,11 +2662,40 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
|
|
|
@Override
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
- public Map buyVipGroup(VipGroupBuyParamsDto vipGroupBuyParams) throws Exception {
|
|
|
+ public HttpResponseResult buyVipGroup(VipGroupBuyParamsDto vipGroupBuyParams) throws Exception {
|
|
|
SysUser user = sysUserFeignService.queryUserInfo();
|
|
|
if(user == null){
|
|
|
throw new BizException("用户信息获取失败");
|
|
|
}
|
|
|
+ // 判断是否存在支付中的记录
|
|
|
+ List<StudentPaymentOrder> list = studentPaymentOrderService
|
|
|
+ .queryByCondition(GroupType.VIP,
|
|
|
+ vipGroupBuyParams.getVipGroupId().toString(),
|
|
|
+ vipGroupBuyParams.getUserId(),
|
|
|
+ DealStatusEnum.ING,
|
|
|
+ OrderTypeEnum.SMALL_CLASS_TO_BUY);
|
|
|
+ if (list.size() > 0) {
|
|
|
+ StudentPaymentOrder applyOrder = list.get(list.size() - 1);
|
|
|
+ // 查询订单状态
|
|
|
+ PayStatus payStatus = studentPaymentOrderService.queryPayStatus(applyOrder.getPaymentChannel(), applyOrder.getOrderNo(), applyOrder.getTransNo());
|
|
|
+ if(payStatus == PayStatus.SUCCESSED){
|
|
|
+ throw new BizException("订单已支付成功,请勿重复支付");
|
|
|
+ }else if(payStatus == PayStatus.PAYING){
|
|
|
+ throw new BizException("订单还在交易中,请稍后重试");
|
|
|
+ }
|
|
|
+ if(!vipGroupBuyParams.isRepeatPay()){
|
|
|
+ return BaseController.failed(HttpStatus.CONTINUE, "您有待支付的订单");
|
|
|
+ }
|
|
|
+ //处理关闭订单
|
|
|
+ applyOrder.setStatus(DealStatusEnum.CLOSE);
|
|
|
+ applyOrder.setMemo("关闭VIP订单");
|
|
|
+ if (applyOrder.getBalancePaymentAmount() != null && applyOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ sysUserCashAccountService.updateBalance(applyOrder.getUserId(), applyOrder.getBalancePaymentAmount(),
|
|
|
+ PlatformCashAccountDetailTypeEnum.REFUNDS, "购买VIP支付失败");
|
|
|
+ }
|
|
|
+ studentPaymentOrderService.update(applyOrder);
|
|
|
+ sysCouponCodeService.quit(applyOrder.getCouponCodeId());
|
|
|
+ }
|
|
|
|
|
|
ClassGroup classGroup =classGroupDao.findByMusicGroupAndType(vipGroupBuyParams.getVipGroupId().toString(),ClassGroupTypeEnum.VIP.getCode());
|
|
|
|
|
|
@@ -2750,7 +2797,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
this.orderCallback(studentPaymentOrder);
|
|
|
Map<String,Object> result=new HashMap<>();
|
|
|
result.put("orderNo",studentPaymentOrder.getOrderNo());
|
|
|
- return result;
|
|
|
+ return BaseController.succeed(result);
|
|
|
}else if(vipGroupBuyParams.isUseBalancePayment() || amount.doubleValue() == 0){
|
|
|
SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(user.getId());
|
|
|
if(userCashAccount == null){
|
|
|
@@ -2774,7 +2821,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
Map<String,Object> result=new HashMap<>();
|
|
|
result.put("orderNo",studentPaymentOrder.getOrderNo());
|
|
|
|
|
|
- return result;
|
|
|
+ return BaseController.succeed(result);
|
|
|
}else{
|
|
|
if (userCashAccount.getBalance().doubleValue() > 0) {
|
|
|
balance = userCashAccount.getBalance();
|
|
|
@@ -2802,27 +2849,25 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
classFee.put("instrument",BigDecimal.ZERO);
|
|
|
classFee.put("accessories",BigDecimal.ZERO);
|
|
|
classFee.put("other",BigDecimal.ZERO);
|
|
|
- Map<String,Object> payMap = payService.getPayMap(
|
|
|
- amount,
|
|
|
- balance,
|
|
|
- orderNo,
|
|
|
- baseApiUrl+"/api-student/studentOrder/notify",
|
|
|
- baseApiUrl+"/api-student/studentOrder/paymentResult?orderNo=" + orderNo,
|
|
|
- "vip课购买",
|
|
|
- vipGroup.getName(),
|
|
|
- vipGroup.getOrganId(),
|
|
|
- "vipBuy"
|
|
|
- );
|
|
|
-
|
|
|
- studentPaymentOrder.setOrganId(vipGroup.getOrganId());
|
|
|
- studentPaymentOrder.setRoutingOrganId(vipGroup.getOrganId());
|
|
|
- studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
|
|
|
- studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
|
|
|
- studentPaymentOrder.setUpdateTime(date);
|
|
|
- studentPaymentOrderService.update(studentPaymentOrder);
|
|
|
-
|
|
|
- return payMap;
|
|
|
+ Map<String,Object> payMap = payService.getPayMap(
|
|
|
+ amount,
|
|
|
+ balance,
|
|
|
+ orderNo,
|
|
|
+ baseApiUrl+"/api-student/studentOrder/notify",
|
|
|
+ baseApiUrl+"/api-student/studentOrder/paymentResult?orderNo=" + orderNo,
|
|
|
+ "vip课购买",
|
|
|
+ vipGroup.getName(),
|
|
|
+ vipGroup.getOrganId(),
|
|
|
+ "vipBuy"
|
|
|
+ );
|
|
|
|
|
|
+ studentPaymentOrder.setOrganId(vipGroup.getOrganId());
|
|
|
+ studentPaymentOrder.setRoutingOrganId(vipGroup.getOrganId());
|
|
|
+ studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
|
|
|
+ studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
|
|
|
+ studentPaymentOrder.setUpdateTime(date);
|
|
|
+ studentPaymentOrderService.update(studentPaymentOrder);
|
|
|
+ return BaseController.succeed(payMap);
|
|
|
}
|
|
|
|
|
|
@Override
|