|
@@ -25,6 +25,7 @@ import com.ym.mec.im.ImFeignService;
|
|
|
import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
|
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
+import com.ym.mec.util.http.HttpUtil;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -115,6 +116,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
private ContractService contractService;
|
|
|
@Autowired
|
|
|
private PracticeLessonApplyDao practiceLessonApplyDao;
|
|
|
+ @Autowired
|
|
|
+ private CourseScheduleEvaluateDao courseScheduleEvaluateDao;
|
|
|
|
|
|
private static Map<Integer, Map<Integer, List<Integer>>> schoolSubjectTeachersMap;
|
|
|
|
|
@@ -2989,10 +2992,26 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
if(!studentPaymentOrder.getStatus().equals(DealStatusEnum.ING)){
|
|
|
return;
|
|
|
}
|
|
|
+ SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(order.getUserId());
|
|
|
List<StudentPaymentOrder> userGroupOrders = studentPaymentOrderDao.findUserGroupOrders(order.getUserId(), order.getMusicGroupId(), order.getGroupType(),null);
|
|
|
Map<DealStatusEnum, Long> statusOrderNumMap = userGroupOrders.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getStatus, Collectors.counting()));
|
|
|
Long successOrderNum=statusOrderNumMap.get(DealStatusEnum.SUCCESS);
|
|
|
if(Objects.nonNull(successOrderNum)&&successOrderNum>0){
|
|
|
+ if(order.getStatus().equals(DealStatusEnum.FAILED)&&Objects.nonNull(order.getBalancePaymentAmount())){
|
|
|
+ sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课购买失败");
|
|
|
+ SysUserCashAccountDetail sysUserIncomeCashAccountDetail = new SysUserCashAccountDetail();
|
|
|
+ sysUserIncomeCashAccountDetail.setUserId(order.getUserId());
|
|
|
+ sysUserIncomeCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
|
|
|
+ sysUserIncomeCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
|
|
|
+ sysUserIncomeCashAccountDetail.setAmount(order.getBalancePaymentAmount());
|
|
|
+ sysUserIncomeCashAccountDetail.setBalance(sysUserCashAccount.getBalance().add(order.getBalancePaymentAmount()));
|
|
|
+ sysUserIncomeCashAccountDetail.setAttribute(order.getTransNo());
|
|
|
+ sysUserIncomeCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
|
|
|
+ sysUserIncomeCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount());
|
|
|
+ sysUserIncomeCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount());
|
|
|
+ sysUserIncomeCashAccountDetail.setDescription("网管课支付失败,退还余额");
|
|
|
+ sysUserCashAccountDetailService.insert(sysUserIncomeCashAccountDetail);
|
|
|
+ }
|
|
|
studentPaymentOrderDao.update(order);
|
|
|
return;
|
|
|
}
|
|
@@ -3001,6 +3020,18 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
if(Objects.nonNull(ingOrderNum)&&ingOrderNum>1&&order.getStatus().equals(DealStatusEnum.FAILED)){
|
|
|
if(Objects.nonNull(order.getBalancePaymentAmount())){
|
|
|
sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课购买失败");
|
|
|
+ SysUserCashAccountDetail sysUserIncomeCashAccountDetail = new SysUserCashAccountDetail();
|
|
|
+ sysUserIncomeCashAccountDetail.setUserId(order.getUserId());
|
|
|
+ sysUserIncomeCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
|
|
|
+ sysUserIncomeCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
|
|
|
+ sysUserIncomeCashAccountDetail.setAmount(order.getBalancePaymentAmount());
|
|
|
+ sysUserIncomeCashAccountDetail.setBalance(sysUserCashAccount.getBalance().add(order.getBalancePaymentAmount()));
|
|
|
+ sysUserIncomeCashAccountDetail.setAttribute(order.getTransNo());
|
|
|
+ sysUserIncomeCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
|
|
|
+ sysUserIncomeCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount());
|
|
|
+ sysUserIncomeCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount());
|
|
|
+ sysUserIncomeCashAccountDetail.setDescription("网管课支付失败,退还余额");
|
|
|
+ sysUserCashAccountDetailService.insert(sysUserIncomeCashAccountDetail);
|
|
|
}
|
|
|
studentPaymentOrderDao.update(order);
|
|
|
return;
|
|
@@ -3011,6 +3042,18 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
}else{
|
|
|
if(Objects.nonNull(order.getBalancePaymentAmount())){
|
|
|
sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课购买失败");
|
|
|
+ SysUserCashAccountDetail sysUserIncomeCashAccountDetail = new SysUserCashAccountDetail();
|
|
|
+ sysUserIncomeCashAccountDetail.setUserId(order.getUserId());
|
|
|
+ sysUserIncomeCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
|
|
|
+ sysUserIncomeCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
|
|
|
+ sysUserIncomeCashAccountDetail.setAmount(order.getBalancePaymentAmount());
|
|
|
+ sysUserIncomeCashAccountDetail.setBalance(sysUserCashAccount.getBalance().add(order.getBalancePaymentAmount()));
|
|
|
+ sysUserIncomeCashAccountDetail.setAttribute(order.getTransNo());
|
|
|
+ sysUserIncomeCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
|
|
|
+ sysUserIncomeCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount());
|
|
|
+ sysUserIncomeCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount());
|
|
|
+ sysUserIncomeCashAccountDetail.setDescription("网管课支付失败,退还余额");
|
|
|
+ sysUserCashAccountDetailService.insert(sysUserIncomeCashAccountDetail);
|
|
|
}
|
|
|
studentPaymentOrderDao.update(order);
|
|
|
PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(order.getMusicGroupId()));
|
|
@@ -3020,7 +3063,6 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
return;
|
|
|
}
|
|
|
studentPaymentOrderDao.update(order);
|
|
|
- SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(order.getUserId());
|
|
|
|
|
|
//插入缴费明细
|
|
|
//收入
|
|
@@ -3067,7 +3109,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
try {
|
|
|
contractService.transferPracticeCoursesContract(order.getUserId(),classGroup.getTotalClassTimes(),practiceGroup.getCoursesStartDate(),practiceGroup.getCoursesExpireDate(),order.getExpectAmount());
|
|
|
} catch (Exception e) {
|
|
|
- LOGGER.error("陪练课[{}]购买协议错误:{}",order.getMusicGroupId(),e.getMessage(),e.getMessage());
|
|
|
+ LOGGER.error("网管课[{}]购买协议错误:{}",order.getMusicGroupId(),e.getMessage(),e.getMessage());
|
|
|
}
|
|
|
|
|
|
Teacher teacher = teacherService.getDetail(practiceGroup.getUserId());
|
|
@@ -3211,8 +3253,14 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
return BaseController.failed(HttpStatus.FAILED_DEPENDENCY, "该课程组已失效,请重新购买");
|
|
|
}
|
|
|
|
|
|
+ String orderNo=idGeneratorService.generatorId("payment") + "";
|
|
|
+
|
|
|
+ newOrder.setOrderNo(orderNo);
|
|
|
newOrder.setActualAmount(newOrder.getExpectAmount());
|
|
|
+ newOrder.setMerNos(null);
|
|
|
newOrder.setBalancePaymentAmount(new BigDecimal(0));
|
|
|
+ newOrder.setComAmount(null);
|
|
|
+ newOrder.setPerAmount(null);
|
|
|
newOrder.setStatus(DealStatusEnum.ING);
|
|
|
newOrder.setVersion(0);
|
|
|
studentPaymentOrderService.insert(newOrder);
|
|
@@ -3251,7 +3299,6 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- String orderNo=idGeneratorService.generatorId("payment") + "";
|
|
|
String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
|
|
|
Map<String, BigDecimal> classFee = new HashMap<>();
|
|
|
classFee.put("course",newOrder.getActualAmount());
|
|
@@ -3273,7 +3320,6 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
|
|
|
Map<String,BigDecimal> routingFee = (Map<String,BigDecimal>)payMap.get("routingFee");
|
|
|
newOrder.setStatus(DealStatusEnum.ING);
|
|
|
- newOrder.setOrderNo(orderNo);
|
|
|
newOrder.setOrganId(practiceGroup.getOrganId());
|
|
|
newOrder.setComAmount(routingFee.get("COM"));
|
|
|
newOrder.setPerAmount(routingFee.get("PER"));
|
|
@@ -3332,4 +3378,51 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
}
|
|
|
return BaseController.succeed();
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void pushStudyReport(Date expiredDate, String pushType) {
|
|
|
+ if(Objects.isNull(expiredDate)){
|
|
|
+ throw new BizException("请指定推送报告的截至日期");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(StringUtils.isBlank(pushType)){
|
|
|
+ throw new BizException("请指定推送类型:JIGUANG、SMS、ALL");
|
|
|
+ }
|
|
|
+
|
|
|
+ String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
|
|
|
+
|
|
|
+ List<CourseScheduleEvaluate> reports = courseScheduleEvaluateDao.findExpiredDateBeforeReport(expiredDate);
|
|
|
+
|
|
|
+ for (CourseScheduleEvaluate report : reports) {
|
|
|
+ PracticeGroup userFreePracticeGroup = practiceGroupDao.get(report.getId());
|
|
|
+ ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(userFreePracticeGroup.getId().toString(), GroupType.PRACTICE.getCode());
|
|
|
+
|
|
|
+ CourseScheduleEvaluate courseScheduleEvaluate = courseScheduleEvaluateDao.findByClassGroupId(classGroup.getId());
|
|
|
+ if(Objects.isNull(courseScheduleEvaluate)){
|
|
|
+ throw new BizException("未生成课程报告");
|
|
|
+ }
|
|
|
+
|
|
|
+ String pushUrl = baseApiUrl + "/#/reportDetail?classGroupId=" + classGroup.getId();
|
|
|
+
|
|
|
+ String smsUrl = baseApiUrl + "/#/transfer?url=http://mstudev.dayaedu.com&hash=reportDetail&classGroupId=" + classGroup.getId();
|
|
|
+
|
|
|
+ SysUser student = sysUserFeignService.queryUserById(userFreePracticeGroup.getStudentId());
|
|
|
+
|
|
|
+ if(pushType.equals("ALL")||pushType.equals("JIGUANG")){
|
|
|
+ Map<Integer, String> userMap = new HashMap<>();
|
|
|
+ userMap.put(userFreePracticeGroup.getStudentId(), userFreePracticeGroup.getStudentId().toString());
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PRACTICE_COMPLETED_STUDY_REPORT,
|
|
|
+ userMap, null, 0, "5?" + pushUrl, "STUDENT", pushUrl);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(pushType.equals("ALL")||pushType.equals("SMS")){
|
|
|
+ Map<Integer, String> userPhoneMap = new HashMap<>();
|
|
|
+ userPhoneMap.put(userFreePracticeGroup.getStudentId(), student.getPhone());
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.PRACTICE_COMPLETED_STUDY_REPORT,
|
|
|
+ userPhoneMap, null, 0, null, "STUDENT", HttpUtil.getSortUrl(smsUrl));
|
|
|
+ }
|
|
|
+ report.setIsPushed(1);
|
|
|
+ courseScheduleEvaluateDao.update(report);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|