Ver Fonte

修改订单支付-针对充值商品

plf há 4 anos atrás
pai
commit
a125c703c0

+ 14 - 0
pay/src/main/java/com/caimei/module/pay/dao/PayDao.java

@@ -43,4 +43,18 @@ public interface PayDao {
     void insertSplitAccount(SplitAccount splitAccount);
 
     void updateSplitAccountByPay(String mbOrderId);
+
+    /**
+     * 修改用户余额
+     * @param userMoney
+     * @param ableUserMoney
+     * @param userID
+     */
+    void updateUserMoney(BigDecimal userMoney, BigDecimal ableUserMoney, Integer userID);
+
+    /**
+     * 新增余额收支记录
+     * @param balanceRecord
+     */
+    void insertBalanceRecord(BalanceRecordVo balanceRecord);
 }

+ 39 - 0
pay/src/main/java/com/caimei/module/pay/service/impl/PayServiceImpl.java

@@ -11,6 +11,7 @@ import com.caimei.module.pay.dao.PayDao;
 import com.caimei.module.pay.service.PayService;
 import com.caimei.module.pay.util.*;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -432,9 +433,47 @@ public class PayServiceImpl implements PayService {
         log.info(">>>>>>>>>>>>>>>>>>>>>>>保存付款金额到收款记录," + amount);
         //修改分账付款状态
         payDao.updateSplitAccountByPay(mbOrderId);
+        //判断是否是充值商品
+        getRechargeGoods(order, amount);
         return "SUCCESS";
     }
 
+    /**
+     * 判断是否是充值商品
+     *
+     * @param order
+     * @param amount 本次支付金额
+     */
+    private void getRechargeGoods(OrderVo order, BigDecimal amount) {
+        boolean rechargeGoods = false;
+        int[] products = {6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069};
+        List<OrderProductVo> orderProductList = payDao.fandAllOrderProduct(order.getOrderID().intValue());
+        for (OrderProductVo orderProduct : orderProductList) {
+            if (ArrayUtils.contains(products, orderProduct.getProductID())) {
+                rechargeGoods = true;
+                break;
+            }
+        }
+        if (rechargeGoods) {
+            UserVo user = payDao.findUser(order.getUserID());
+            user.setUserMoney(MathUtil.add(user.getUserMoney(), amount));
+            user.setAbleUserMoney(MathUtil.add(user.getAbleUserMoney(), amount));
+            payDao.updateUserMoney(user.getUserMoney(), user.getAbleUserMoney(), user.getUserID());
+            //保存余额到余额收支记录
+            BalanceRecordVo balanceRecord = new BalanceRecordVo();
+            balanceRecord.setUserId(user.getUserID().longValue());
+            balanceRecord.setType("1");
+            balanceRecord.setBalanceType("4");
+            balanceRecord.setAddDate(new Date());
+            balanceRecord.setAmount(amount);
+            balanceRecord.setOrderId(order.getOrderID());
+            balanceRecord.setRemark("订单商品充值余额");
+            balanceRecord.setDelFlag("0");
+            payDao.insertBalanceRecord(balanceRecord);
+            log.info("订单商品充值余额>>>>>>>>>>>>>" + amount);
+        }
+    }
+
     /**
      * 支付状态转换
      */

+ 29 - 0
pay/src/main/resources/com-caimei-module-pay/PayMapper.xml

@@ -397,4 +397,33 @@
     <update id="updateSplitAccountByPay">
         UPDATE cm_split_account SET payStatus = '1' WHERE mbOrderId = #{mbOrderId}
     </update>
+
+    <update id="updateUserMoney">
+        update user
+        <set>
+            <if test="userMoney != null">
+                userMoney = #{userMoney},
+            </if>
+            <if test="ableUserMoney != null">
+                ableUserMoney = #{ableUserMoney},
+            </if>
+        </set>
+        where userID = #{userID}
+    </update>
+
+    <insert id="insertBalanceRecord">
+        INSERT INTO `cm_user_balance_record` (
+          `userId`, `type`, `balanceType`, `addDate`,
+          `amount`, `orderId`, `receiptId`,
+          `returnedId`, `withdrawalsId`, `remark`,
+          `delFlag`
+        )
+        VALUES
+          (
+            #{userId}, #{type}, #{balanceType}, #{addDate},
+            #{amount}, #{orderId}, #{receiptId},
+            #{returnedId}, #{withdrawalsId}, #{remark},
+            #{delFlag}
+          )
+    </insert>
 </mapper>