Prechádzať zdrojové kódy

6.1活动增加回调

周箭河 4 rokov pred
rodič
commit
2cfdb7a7a4

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ChildrenDayDegreeDetailDao.java

@@ -23,4 +23,13 @@ public interface ChildrenDayDegreeDetailDao extends BaseDAO<Integer, ChildrenDay
      * @return
      */
     int batchAdd(@Param("details") List<ChildrenDayDegreeDetail> details);
+
+    /**
+     * 跟新状态信息
+     *
+     * @param orderId
+     * @param status
+     * @return
+     */
+    int updateStatus(@Param("orderId") Long orderId, @Param("status") Integer status);
 }

+ 14 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/ChildrenDayDegreeDetailService.java

@@ -21,6 +21,7 @@ public interface ChildrenDayDegreeDetailService extends BaseService<Integer, Chi
 
     /**
      * 增加考级支付详情
+     *
      * @param degreePayDto
      * @param gradeFee
      * @param theoryLevelFee
@@ -29,10 +30,11 @@ public interface ChildrenDayDegreeDetailService extends BaseService<Integer, Chi
      * @param theoryCourseFee
      * @return
      */
-    List<ChildrenDayDegreeDetail> addDegreeDetails(DegreePayDto degreePayDto, BigDecimal gradeFee,BigDecimal theoryLevelFee,BigDecimal vip1v1Fee,BigDecimal vip1v2Fee,BigDecimal theoryCourseFee);
+    List<ChildrenDayDegreeDetail> addDegreeDetails(DegreePayDto degreePayDto, BigDecimal gradeFee, BigDecimal theoryLevelFee, BigDecimal vip1v1Fee, BigDecimal vip1v2Fee, BigDecimal theoryCourseFee);
 
     /**
      * 增加考级订单详情
+     *
      * @param degreePayDto
      * @param gradeFee
      * @param theoryLevelFee
@@ -45,9 +47,20 @@ public interface ChildrenDayDegreeDetailService extends BaseService<Integer, Chi
 
     /**
      * 获取用户6.1考级报名详情
+     *
      * @param userId
      * @return
      */
     List<ChildrenDayDegreeDetail> getUserDegreeInfo(Integer userId);
 
+
+    /**
+     * 更新状态信息
+     *
+     * @param orderId
+     * @param status
+     * @return
+     */
+    Integer updateStatus(Long orderId, Integer status);
+
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ChildrenDayReserveService.java

@@ -4,6 +4,7 @@ package com.ym.mec.biz.service;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.ChildrenDayReserve;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.ChildrenReserveQueryInfo;
 import com.ym.mec.common.page.PageInfo;
@@ -35,6 +36,7 @@ public interface ChildrenDayReserveService extends BaseService<Integer, Children
 
     /**
      * 获取活动的费用信息
+     *
      * @param organId
      * @return
      */
@@ -42,6 +44,7 @@ public interface ChildrenDayReserveService extends BaseService<Integer, Children
 
     /**
      * 获取后台考级活动详情列表
+     *
      * @param queryInfo
      * @return
      */
@@ -54,4 +57,12 @@ public interface ChildrenDayReserveService extends BaseService<Integer, Children
      * @throws Exception
      */
     Map pay(DegreePayDto degreePayDto) throws Exception;
+
+    /**
+     * 支付回调处理
+     *
+     * @param studentPaymentOrder
+     * @return
+     */
+    Boolean orderCallback(StudentPaymentOrder studentPaymentOrder);
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ChildrenDayDegreeDetailServiceImpl.java

@@ -141,4 +141,9 @@ public class ChildrenDayDegreeDetailServiceImpl extends BaseServiceImpl<Integer,
     public List<ChildrenDayDegreeDetail> getUserDegreeInfo(Integer userId) {
         return childrenDayDegreeDetailDao.getByUserIdAndStatus(userId, 2);
     }
+
+    @Override
+    public Integer updateStatus(Long orderId, Integer status) {
+        return childrenDayDegreeDetailDao.updateStatus(orderId, status);
+    }
 }

+ 95 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ChildrenDayReserveServiceImpl.java

@@ -12,8 +12,11 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -49,6 +52,16 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
     private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
     @Autowired
     private PayService payService;
+    @Autowired
+    private SysUserCashAccountDetailService sysUserCashAccountDetailService;
+    @Autowired
+    private ContractService contractService;
+    @Autowired
+    private SysUserCashAccountService sysUserCashAccountService;
+    @Autowired
+    private SysMessageService sysMessageService;
+
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
     @Override
     public BaseDAO<Integer, ChildrenDayReserve> getDAO() {
@@ -325,4 +338,86 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
         studentPaymentOrderService.update(studentPaymentOrder);
         return payMap;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean orderCallback(StudentPaymentOrder studentPaymentOrder) {
+        Date nowDate = new Date();
+        //更新订单信息
+        studentPaymentOrder.setUpdateTime(nowDate);
+        int updateCount = studentPaymentOrderService.update(studentPaymentOrder);
+        if (updateCount <= 0) {
+            throw new BizException("订单更新失败");
+        }
+
+        Integer userId = studentPaymentOrder.getUserId();
+
+        Map<Integer, String> map = new HashMap<>();
+        map.put(userId, userId.toString());
+
+        //支付成功
+        if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
+            if (childrenDayDegreeDetailService.updateStatus(studentPaymentOrder.getId(), 2) <= 0) {
+                throw new BizException("购买详情,更新失败");
+            }
+
+
+            //插入交易明细
+            BigDecimal amount = studentPaymentOrder.getActualAmount();
+            if (amount.compareTo(BigDecimal.ZERO) > 0) {
+                SysUserCashAccount cashAccount = sysUserCashAccountService.get(userId);
+                //充值
+                SysUserCashAccountDetail rechargeDetail = new SysUserCashAccountDetail();
+                rechargeDetail.setAmount(amount);
+                rechargeDetail.setBalance(cashAccount.getBalance().add(amount));
+                rechargeDetail.setComment("缴费前充值");
+                rechargeDetail.setCreateTime(nowDate);
+                rechargeDetail.setStatus(DealStatusEnum.SUCCESS);
+                rechargeDetail.setTransNo(studentPaymentOrder.getTransNo());
+                rechargeDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
+                rechargeDetail.setUpdateTime(nowDate);
+                rechargeDetail.setUserId(userId);
+                rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
+                rechargeDetail.setComAmount(studentPaymentOrder.getComAmount());
+                rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount());
+                sysUserCashAccountDetailService.insert(rechargeDetail);
+
+                //缴费
+                SysUserCashAccountDetail paymentDetail = new SysUserCashAccountDetail();
+                paymentDetail.setAmount(amount.negate());
+                paymentDetail.setBalance(cashAccount.getBalance());
+                paymentDetail.setComment("6.1考级活动");
+                paymentDetail.setCreateTime(nowDate);
+                paymentDetail.setStatus(DealStatusEnum.SUCCESS);
+                paymentDetail.setTransNo(studentPaymentOrder.getTransNo());
+                paymentDetail.setType(PlatformCashAccountDetailTypeEnum.PAY_FEE);
+                paymentDetail.setUpdateTime(nowDate);
+                paymentDetail.setUserId(userId);
+                rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
+                sysUserCashAccountDetailService.insert(paymentDetail);
+            }
+
+            try {
+                contractService.transferProduceContract(userId, null);
+            } catch (Exception e) {
+                logger.error("产品协议生成失败", e);
+            }
+            return true;
+        }
+
+        if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
+            if (childrenDayDegreeDetailService.updateStatus(studentPaymentOrder.getId(), 3) <= 0) {
+                throw new BizException("购买详情,更新失败");
+            }
+
+            if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+                sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "6.1考级支付失败");
+            }
+
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_SPORADIC_PAYMENT_FAILED, map, null, 0, null, "STUDENT",
+                    studentPaymentOrder.getActualAmount(), "6.1考级活动");
+            return false;
+        }
+        return true;
+    }
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -90,6 +90,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     private StudentInstrumentService studentInstrumentService;
     @Autowired
     private ReplacementInstrumentActivityService replacementInstrumentActivityService;
+    @Autowired
+    private ChildrenDayReserveService childrenDayReserveService;
 
     @Override
     public BaseDAO<Long, StudentPaymentOrder> getDAO() {
@@ -374,6 +376,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             studentInstrumentService.orderCallback(order);
         } else if (order.getType().equals(OrderTypeEnum.REPLACEMENT)) {
             replacementInstrumentActivityService.orderCallback(order);
+        }else if (order.getType().equals(OrderTypeEnum.DEGREE)) {
+            childrenDayReserveService.orderCallback(order);
         }
     }
 

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/ChildrenDayDegreeDetailDao.xml

@@ -90,4 +90,11 @@
             now(),now())
         </foreach>
     </insert>
+
+    <update id="updateStatus">
+        UPDATE children_day_degree_detail
+        SET status_=#{status},
+            update_time = NOW()
+        WHERE order_id_ = #{orderId}
+    </update>
 </mapper>