Memory_LG 3 weeks ago
parent
commit
4999d60e02

+ 20 - 2
qmjszx-admin/src/main/java/beilv/web/controller/carinformation/CardAppController.java

@@ -129,7 +129,7 @@ public class CardAppController extends BaseController {
     @ResponseBody
     public AjaxResult addVipCardLogCallBack(@RequestBody VipCardLog vipCardLog) {
         int i = vipCardLogService.updateVipCardLogByOrderId(vipCardLog);
-        if(i>1){
+        if(i>0){
             if("payment_status_cancelled".equals(vipCardLog.getPaymentStatus())){
                 return payController.cancelOrder(vipCardLog.getId());
             }
@@ -147,7 +147,7 @@ public class CardAppController extends BaseController {
     @ResponseBody
     public AjaxResult addOrderLogCallBack(@RequestBody VipCardLog vipCardLog) {
         int i = vipCardLogService.updateVipCardLogByOrderId(vipCardLog);
-        if(i>1){
+        if(i>0){
             if("payment_status_cancelled".equals(vipCardLog.getPaymentStatus())){
                 return payController.cancelOrder(vipCardLog.getId());
             }
@@ -331,6 +331,12 @@ public class CardAppController extends BaseController {
         vipCardService.updateVipCard(vipCard);
         //写入会员卡流水
         vipCardLogService.insertAmountLog(vipCardAmountLog);
+
+        //如果是约球订单
+        AdmissionTicket admissionTicket = new AdmissionTicket();
+        admissionTicket.setId(vipCardLog.getBusId());
+        //创建场次定时任务, 到时间自动核销
+        ticketService.createTask(admissionTicket);
         return true;
     }
 
@@ -346,11 +352,23 @@ public class CardAppController extends BaseController {
         }
         userMembershipCard.setRemainingNumber(userMembershipCard.getRemainingNumber() - 1);
         userMembershipCardService.updateUserMembershipCard(userMembershipCard);
+
+        //如果是约球订单
+        AdmissionTicket admissionTicket = new AdmissionTicket();
+        admissionTicket.setId(vipCardLog.getBusId());
+        //创建场次定时任务, 到时间自动核销
+        ticketService.createTask(admissionTicket);
         return true;
     }
 
     private AjaxResult insertVipCardLog(VipCardLog vipCardLog, String uuid){
         if (vipCardLogService.insertVipCardLog(vipCardLog) > 0) {
+            if("gouka".equals(vipCardLog.getOrderType())){
+                //如果是购买次卡订单, 拉去卡种信息
+                CarInformation carInformation = carInformationService.selectCarInformationById(Long.valueOf(vipCardLog.getBusId()));
+                //购卡订单, 支付成功, 生成卡片写入到次卡表
+                userMembershipCardService.insertUserMembershipCard(new UserMembershipCard(vipCardLog.getUserId(), vipCardLog.getId(), carInformation.getTotalNumber(), "0", "3", DateUtils.getNowDate(), vipCardLog.getBusId()));
+            }
             return AjaxResult.success("操作成功!", uuid);
         } else {
             return toAjax(0);

+ 2 - 1
qmjszx-business/src/main/java/beilv/vipCard/domain/VipCard.java

@@ -71,8 +71,9 @@ public class VipCard extends BaseEntity {
     private String username;
     private String mobile;
 
-    public VipCard(Long userId, BigDecimal balance) {
+    public VipCard(Long userId, BigDecimal balance, BigDecimal score) {
         this.userId = userId;
         this.balance = balance;
+        this.score = score;
     }
 }

+ 2 - 1
qmjszx-business/src/main/java/beilv/vipCardLog/mapper/VipCardLogMapper.java

@@ -1,6 +1,7 @@
 package beilv.vipCardLog.mapper;
 
 import beilv.vipCardLog.domain.VipCardLog;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -69,5 +70,5 @@ public interface VipCardLogMapper {
 
     void updateVipCardLogByBusId(VipCardLog vipCardLog);
 
-    List<VipCardLog> selectVipCardLogByBusId(String busId, String orderType);
+    List<VipCardLog> selectVipCardLogByBusId(@Param("busId") String busId,@Param("orderType") String orderType);
 }

+ 26 - 14
qmjszx-business/src/main/java/beilv/vipCardLog/service/impl/VipCardLogServiceImpl.java

@@ -24,17 +24,21 @@ import beilv.vipCardLog.mapper.VipCardLogMapper;
 import beilv.vipCardLog.service.IVipCardLogService;
 import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.List;
 import java.util.Map;
 
+import static beilv.competition.domain.Constant.ORDER_QUEUE;
+
 /**
  * 充值记录Service业务层处理
  *
@@ -67,6 +71,9 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
     @Resource
     private VipCardAmountLogMapper amountLogMapper;
 
+    @Autowired
+    private StringRedisTemplate stringRedisTemplate;
+
     /**
      * 查询充值记录
      *
@@ -170,12 +177,12 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
             String vipCardId;
             if (null == vipCard) {
                 //true 没有会员卡; 新增会员卡, 并且设置本次充值金额
-                vipCardId = vipCardService.insertVipCard(new VipCard(Long.parseLong(orderInfo.getUserId()), orderInfo.getPracticalMoney()));
+                vipCardId = vipCardService.insertVipCard(new VipCard(Long.parseLong(orderInfo.getUserId()), orderInfo.getPracticalMoney(), BigDecimal.ZERO));
             } 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)));
+                vipCardService.updateVipCard(new VipCard(Long.parseLong(orderInfo.getUserId()), orderInfo.getPracticalMoney().add(vipCard.getBalance()).setScale(2, RoundingMode.HALF_UP), vipCard.getScore()));
             }
             //设定支付时间
             vipCardLog.setPaymentTime(DateUtils.getNowDate());
@@ -183,7 +190,7 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
             insertAmountLog(new VipCardAmountLog(orderInfo.getUserId(), vipCardId, orderInfo.getId(), balance, orderInfo.getPracticalMoney(),"1"));
 
             //支付成功移除定时任务
-
+            stringRedisTemplate.delete(ORDER_QUEUE+orderInfo.getId());
         } else if ("payment_status_cancelled".equals(vipCardLog.getPaymentStatus())) {
             //如果是取消, 设置支付状态为取消支付
             vipCardLog.setCancellationTime(DateUtils.getNowDate());
@@ -271,29 +278,33 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
 
         if ("yueqiu".equals(orderInfo.getOrderType())) {
 
-            if(isOnline){
-                //获取设定的取消时间范围(分钟)
+            if (isOnline) {
+                // 获取设定的取消时间范围(分钟)
                 long cancelMinutes = Long.parseLong(configService.selectConfigByKey("cancel.minutes"));
-                //根据订单获取约场的开始时间
+                // 根据订单获取约场的开始时间
                 AdmissionTicket admissionTicket = ticketService.selectBeilvAdmissionTicketById(orderInfo.getBusId());
+                String format = new SimpleDateFormat("yyyy-MM-dd").format(admissionTicket.getTicketDate());
                 String startTime = admissionTicket.getSession().split("-")[0]; // 10:00
 
                 // 当前时间
                 LocalDateTime now = LocalDateTime.now();
 
+                // 定义日期时间格式器
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
+
                 // 将 startTime 转换为 LocalDateTime
-                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
-                LocalDateTime startDateTime = LocalDateTime.of(now.toLocalDate(), LocalDateTime.parse(startTime, formatter).toLocalTime());
+                LocalDateTime startDateTime = LocalDateTime.parse(format + " " + startTime, formatter);
 
                 // 计算 startTime 减去 cancelMinutes 后的时间
                 LocalDateTime cancelTime = startDateTime.minus(cancelMinutes, ChronoUnit.MINUTES);
 
-                //判断当前时间是否可以退款
-                if(now.isBefore(cancelTime)){
-                    return AjaxResult.error("距离开场仅剩"+cancelMinutes+"分钟, 不允许线上退款!如需退款请线下联系工作人员!");
+                // 判断当前时间是否可以退款
+                if (cancelTime.isBefore(now)) {
+                    return AjaxResult.error("距离开场不足" + cancelMinutes + "分钟, 不允许线上退款!如需退款请线下联系工作人员!");
                 }
             }
 
+
             if ("numCard".equals(orderInfo.getPaymentType())) {
                 refundSum++;
             } else {
@@ -347,10 +358,11 @@ public class VipCardLogServiceImpl implements IVipCardLogService {
         if("vipCard".equals(orderInfo.getPaymentType())){
             //查询会员卡信息
             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,"1"));
+            VipCardAmountLog vipCardAmountLog = new VipCardAmountLog(orderInfo.getUserId(), orderInfo.getPaymentId(), orderInfo.getId(), vipCard.getBalance(), refundPrice, "1");
+            amountLogMapper.insertVipCardAmountLog(vipCardAmountLog);
+            vipCard.setBalance(vipCardAmountLog.getRemainingAmount());
+            vipCardService.updateVipCard(vipCard);
 
         } else if ("weChart".equals(orderInfo.getPaymentType())) {
             orderInfo.setRefundPrice(refundPrice);

+ 1 - 1
qmjszx-business/src/main/resources/mapper/vipCardLog/VipCardLogMapper.xml

@@ -233,7 +233,7 @@
 
     <select id="selectVipCardLogByBusId" parameterType="String" resultMap="VipCardLogResult">
         <include refid="selectVipCardLogVo"/>
-        where bus_id = #{busId}
+        where bus_id = #{busId} and order_type = #{orderType}
     </select>
 
 </mapper>