|
@@ -94,21 +94,32 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Map payChange(Integer id, BigDecimal viewAmount, Boolean isUseBalancePayment) throws Exception {
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Map payChange(Integer id, BigDecimal viewAmount, Boolean isUseBalancePayment, Boolean isRepay) throws Exception {
|
|
|
+ Date date = new Date();
|
|
|
SubjectChange subjectChange = subjectChangeDao.get(id);
|
|
|
+ if (isRepay) {
|
|
|
+ StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.get(subjectChange.getOrganId().longValue());
|
|
|
+ studentPaymentOrder.setStatus(DealStatusEnum.CLOSE);
|
|
|
+ studentPaymentOrder.setUpdateTime(date);
|
|
|
+ studentPaymentOrderService.update(studentPaymentOrder);
|
|
|
+ subjectChange.setStatus(SubjectChangeStatusEnum.WAIT_PAY);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (subjectChange.getStatus().equals(SubjectChangeStatusEnum.CANCELED)) {
|
|
|
+ throw new BizException("声部更改已取消,请勿缴费");
|
|
|
+ }
|
|
|
+ if (subjectChange.getStatus().equals(SubjectChangeStatusEnum.SUCCESSED)) {
|
|
|
+ throw new BizException("声部更改已缴费,请勿重复缴费");
|
|
|
+ }
|
|
|
+
|
|
|
MusicGroup musicGroup = musicGroupDao.get(subjectChange.getMusicGroupId());
|
|
|
- if (musicGroup.getStatus().equals(MusicGroupStatusEnum.APPLY) && musicGroup.getStatus().equals(MusicGroupStatusEnum.PAY)) {
|
|
|
- throw new BizException("乐团当前状态不能缴费");
|
|
|
+ if (!musicGroup.getStatus().equals(MusicGroupStatusEnum.APPLY) && !musicGroup.getStatus().equals(MusicGroupStatusEnum.PAY)) {
|
|
|
+ throw new BizException("乐团当前状态不能缴声部更改费用");
|
|
|
}
|
|
|
BigDecimal amount = subjectChange.getGoodsMargin().add(subjectChange.getCourseMargin());
|
|
|
|
|
|
- Date date = new Date();
|
|
|
studentDao.lockUser(subjectChange.getStudentId());
|
|
|
- subjectChange.setUpdateTime(date);
|
|
|
- subjectChange.setStatus(SubjectChangeStatusEnum.ING);
|
|
|
- if (subjectChangeDao.update(subjectChange) <= 0) {
|
|
|
- throw new BizException("下单失败,请重试");
|
|
|
- }
|
|
|
|
|
|
String orderNo = idGeneratorService.generatorId("payment") + "";
|
|
|
|
|
@@ -129,10 +140,21 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
|
|
|
studentPaymentOrder.setRoutingOrganId(subjectChange.getOrganId());
|
|
|
|
|
|
studentPaymentOrderService.insert(studentPaymentOrder);
|
|
|
+
|
|
|
+ subjectChange.setOrderId(studentPaymentOrder.getId().intValue());
|
|
|
+ subjectChange.setOrderNo(orderNo);
|
|
|
+ subjectChange.setOrganId(studentPaymentOrder.getOrganId());
|
|
|
+ subjectChange.setUpdateTime(date);
|
|
|
+ subjectChange.setStatus(SubjectChangeStatusEnum.ING);
|
|
|
+ if (subjectChangeDao.update(subjectChange) <= 0) {
|
|
|
+ throw new BizException("下单失败,请重试");
|
|
|
+ }
|
|
|
+
|
|
|
studentPaymentOrder.setVersion(0);
|
|
|
if (amount.compareTo(viewAmount) != 0) {
|
|
|
throw new BizException("价格异常");
|
|
|
}
|
|
|
+
|
|
|
BigDecimal balance = BigDecimal.ZERO;
|
|
|
if (isUseBalancePayment != null && isUseBalancePayment && amount.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(subjectChange.getStudentId());
|
|
@@ -190,6 +212,10 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public SubjectChange addChange(SubjectChange subjectChange) {
|
|
|
+ SubjectChange studentWaitPay = subjectChangeDao.getStudentWaitPay(subjectChange.getStudentId(), subjectChange.getMusicGroupId());
|
|
|
+ if(studentWaitPay != null){
|
|
|
+ throw new BizException("已有未支付的声部更改,请勿重复创建");
|
|
|
+ }
|
|
|
Date nowDate = new Date();
|
|
|
SubjectChange studentOriginal = getStudentOriginal(subjectChange.getStudentId(), subjectChange.getMusicGroupId());
|
|
|
subjectChange.setOriginalCost(studentOriginal.getOriginalCost());
|
|
@@ -316,6 +342,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean orderCallback(StudentPaymentOrder studentPaymentOrder) {
|
|
|
Date nowDate = new Date();
|
|
|
//更新订单信息
|
|
@@ -330,14 +357,15 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
|
|
|
if (subjectChange == null) {
|
|
|
throw new BizException("声部更换订单不存在");
|
|
|
}
|
|
|
- if (!subjectChange.getStatus().equals(SubjectChangeStatusEnum.WAIT_PAY)) {
|
|
|
+ if (!subjectChange.getStatus().equals(SubjectChangeStatusEnum.ING)) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- Integer userId = studentPaymentOrder.getUserId();
|
|
|
+ subjectChange.setUpdateTime(nowDate);
|
|
|
+ subjectChange.setTransNo(studentPaymentOrder.getTransNo());
|
|
|
+ subjectChange.setMerNo(studentPaymentOrder.getMerNos());
|
|
|
|
|
|
- //更新声部信息报名数量
|
|
|
- studentRegistrationService.changeStudentSubject(subjectChange.getStudentId(), subjectChange.getMusicGroupId(), subjectChange.getOriginalSubjectId(), subjectChange.getChangeSubjectId());
|
|
|
+ Integer userId = studentPaymentOrder.getUserId();
|
|
|
|
|
|
Map<Integer, String> map = new HashMap<>();
|
|
|
map.put(userId, userId.toString());
|
|
@@ -348,10 +376,10 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
|
|
|
} catch (Exception e) {
|
|
|
logger.error("产品协议生成失败", e);
|
|
|
}
|
|
|
+ //更新声部信息报名数量
|
|
|
+ studentRegistrationService.changeStudentSubject(subjectChange.getStudentId(), subjectChange.getMusicGroupId(), subjectChange.getOriginalSubjectId(), subjectChange.getChangeSubjectId());
|
|
|
|
|
|
subjectChange.setStatus(SubjectChangeStatusEnum.SUCCESSED);
|
|
|
- subjectChange.setUpdateTime(nowDate);
|
|
|
- subjectChange.setSellTime(nowDate);
|
|
|
|
|
|
//乐器辅件价差大于0时,有销售金额
|
|
|
if (studentPaymentOrder.getActualAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
@@ -404,7 +432,6 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
|
|
|
|
|
|
if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
|
|
|
subjectChange.setStatus(SubjectChangeStatusEnum.WAIT_PAY);
|
|
|
- subjectChange.setUpdateTime(nowDate);
|
|
|
if (this.update(subjectChange) <= 0) {
|
|
|
throw new BizException("声部更改订单更新失败");
|
|
|
}
|