|
|
@@ -9,6 +9,7 @@ import beilv.common.core.domain.AjaxResult;
|
|
|
import beilv.common.core.text.Convert;
|
|
|
import beilv.common.utils.DateUtils;
|
|
|
import beilv.common.utils.StringUtils;
|
|
|
+import beilv.common.utils.uuid.IdUtils;
|
|
|
import beilv.competition.domain.Competition;
|
|
|
import beilv.competition.service.ICompetitionService;
|
|
|
import beilv.system.service.ISysConfigService;
|
|
|
@@ -16,12 +17,15 @@ import beilv.usermembershipcard.domain.UserMembershipCard;
|
|
|
import beilv.usermembershipcard.service.IUserMembershipCardService;
|
|
|
import beilv.vipCard.domain.VipCard;
|
|
|
import beilv.vipCard.service.IVipCardService;
|
|
|
+import beilv.vipCardAmountLog.domain.VipCardAmountLog;
|
|
|
+import beilv.vipCardAmountLog.mapper.VipCardAmountLogMapper;
|
|
|
import beilv.vipCardLog.domain.VipCardLog;
|
|
|
import beilv.vipCardLog.mapper.VipCardLogMapper;
|
|
|
import beilv.vipCardLog.service.IVipCardLogService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.time.LocalDateTime;
|
|
|
@@ -59,6 +63,8 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
|
|
|
@Autowired
|
|
|
private ISysConfigService configService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private VipCardAmountLogMapper amountLogMapper;
|
|
|
|
|
|
/**
|
|
|
* 查询充值记录
|
|
|
@@ -129,39 +135,53 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
|
|
|
|
|
|
@Override
|
|
|
public int updateVipCardLogByOrderId(VipCardLog vipCardLog) {
|
|
|
+ //验证订单编号是否为空
|
|
|
if (StringUtils.isEmpty(vipCardLog.getId())) {
|
|
|
return 0;
|
|
|
}
|
|
|
- VipCardLog cardLog = vipCardLogMapper.selectVipCardLogById(vipCardLog.getId());
|
|
|
- if ("chongzhi".equals(cardLog.getOrderType())) {
|
|
|
- charging(vipCardLog);
|
|
|
+ //拉去订单信息
|
|
|
+ VipCardLog orderInfo = vipCardLogMapper.selectVipCardLogById(vipCardLog.getId());
|
|
|
+ //充值订单和其他订单处理方式不同
|
|
|
+ if ("chongzhi".equals(orderInfo.getOrderType())) {
|
|
|
+ charging(vipCardLog, orderInfo);
|
|
|
} else {
|
|
|
- other(vipCardLog);
|
|
|
+ other(vipCardLog, orderInfo);
|
|
|
}
|
|
|
+ //更新订单状态
|
|
|
return vipCardLogMapper.updateVipCardLog(vipCardLog);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 充值回调
|
|
|
*
|
|
|
- * @param vipCardLog
|
|
|
+ * @param vipCardLog 订单请求信息
|
|
|
+ * @param orderInfo 原订单信息
|
|
|
* @return
|
|
|
*/
|
|
|
- private void charging(VipCardLog vipCardLog) {
|
|
|
+ private void charging(VipCardLog vipCardLog, VipCardLog orderInfo) {
|
|
|
if ("payment_status_have_paid".equals(vipCardLog.getPaymentStatus())) {
|
|
|
//拉取订单信息
|
|
|
- VipCardLog orderInfo = vipCardLogMapper.selectVipCardLogById(vipCardLog.getId());
|
|
|
+// VipCardLog orderInfo = vipCardLogMapper.selectVipCardLogById(vipCardLog.getId());
|
|
|
//获取会员卡信息
|
|
|
VipCard vipCard = vipCardService.selectVipCardByUserId(orderInfo.getUserId());
|
|
|
+ //获取当前余额
|
|
|
+ BigDecimal balance = BigDecimal.ZERO;
|
|
|
+ String vipCardId;
|
|
|
if (null == vipCard) {
|
|
|
//true 没有会员卡; 新增会员卡, 并且设置本次充值金额
|
|
|
- vipCardService.insertVipCard(new VipCard(Long.parseLong(orderInfo.getUserId()), orderInfo.getPracticalMoney()));
|
|
|
+ vipCardId = vipCardService.insertVipCard(new VipCard(Long.parseLong(orderInfo.getUserId()), orderInfo.getPracticalMoney()));
|
|
|
} else {
|
|
|
+ balance = vipCard.getBalance();
|
|
|
+ vipCardId = vipCard.getId();
|
|
|
//false 有会员卡,
|
|
|
vipCardService.updateVipCard(new VipCard(Long.parseLong(orderInfo.getUserId()), orderInfo.getPracticalMoney().add(vipCard.getBalance()).setScale(2, RoundingMode.HALF_UP)));
|
|
|
}
|
|
|
+ //设定支付时间
|
|
|
vipCardLog.setPaymentTime(DateUtils.getNowDate());
|
|
|
+ //写入会员卡流水
|
|
|
+ insertAmountLog(new VipCardAmountLog(orderInfo.getUserId(), vipCardId, orderInfo.getId(), balance, orderInfo.getPracticalMoney()));
|
|
|
} else if ("payment_status_cancelled".equals(vipCardLog.getPaymentStatus())) {
|
|
|
+ //如果是取消, 设置支付状态为取消支付
|
|
|
vipCardLog.setCancellationTime(DateUtils.getNowDate());
|
|
|
}
|
|
|
}
|
|
|
@@ -172,26 +192,34 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
|
|
|
* @param vipCardLog
|
|
|
* @return
|
|
|
*/
|
|
|
- private void other(VipCardLog vipCardLog) {
|
|
|
+ private void other(VipCardLog vipCardLog, VipCardLog orderInfo) {
|
|
|
//拉取订单信息
|
|
|
- VipCardLog orderInfo = vipCardLogMapper.selectVipCardLogById(vipCardLog.getId());
|
|
|
+// VipCardLog orderInfo = vipCardLogMapper.selectVipCardLogById(vipCardLog.getId());
|
|
|
if ("payment_status_have_paid".equals(vipCardLog.getPaymentStatus())) {
|
|
|
+ //支付成功流程
|
|
|
+ //设置支付时间
|
|
|
vipCardLog.setPaymentTime(DateUtils.getNowDate());
|
|
|
+ //获取订单类型
|
|
|
String orderType = orderInfo.getOrderType();
|
|
|
if ("gouka".equals(orderType)) {
|
|
|
+ //如果是购买次卡订单, 拉去卡种信息
|
|
|
CarInformation carInformation = carInformationService.selectCarInformationById(Long.valueOf(orderInfo.getBusId()));
|
|
|
//购卡订单, 支付成功, 生成卡片写入到次卡表
|
|
|
userMembershipCardService.insertUserMembershipCard(new UserMembershipCard(orderInfo.getUserId(), vipCardLog.getId(), carInformation.getTotalNumber(), "0", "3", DateUtils.getNowDate()));
|
|
|
}
|
|
|
|
|
|
if("yueqiu".equals(orderType)){
|
|
|
+ //如果是约球订单
|
|
|
AdmissionTicket admissionTicket = new AdmissionTicket();
|
|
|
admissionTicket.setId(orderInfo.getBusId());
|
|
|
+ //创建场次定时任务, 到时间自动核销
|
|
|
ticketService.createTask(admissionTicket);
|
|
|
}
|
|
|
} else if ("payment_status_cancelled".equals(vipCardLog.getPaymentStatus())) {
|
|
|
+ //如果是取消订单,设置支付状态为取消支付
|
|
|
vipCardLog.setCancellationTime(DateUtils.getNowDate());
|
|
|
if ("yueqiu".equals(orderInfo.getOrderType())) {
|
|
|
+ //如果是约球订单, 修改球场信息
|
|
|
AdmissionTicket admissionTicket = new AdmissionTicket();
|
|
|
admissionTicket.setId(orderInfo.getBusId());
|
|
|
admissionTicket.setAdmissionTicketStatus("0");
|
|
|
@@ -316,6 +344,9 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
|
|
|
VipCard vipCard = vipCardService.selectVipCardById(orderInfo.getPaymentId());
|
|
|
vipCard.setBalance(vipCard.getBalance().add(refundPrice));
|
|
|
vipCardService.updateVipCard(vipCard);
|
|
|
+ //写入会员卡流水
|
|
|
+ amountLogMapper.insertVipCardAmountLog(new VipCardAmountLog(orderInfo.getUserId(), orderInfo.getPaymentId(), orderInfo.getId(), vipCard.getBalance(), refundPrice));
|
|
|
+
|
|
|
} else if ("weChart".equals(orderInfo.getPaymentType())) {
|
|
|
//微信支付, 退款到微信
|
|
|
|
|
|
@@ -346,4 +377,8 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
|
|
|
public List<Map<String, Object>> selectCanSaiList(VipCardLog vipCardLog) {
|
|
|
return vipCardLogMapper.selectCanSaiList(vipCardLog);
|
|
|
}
|
|
|
+
|
|
|
+ public void insertAmountLog(VipCardAmountLog vipCardAmountLog){
|
|
|
+ amountLogMapper.insertVipCardAmountLog(vipCardAmountLog);
|
|
|
+ }
|
|
|
}
|