소스 검색

线上/下余额退款

zhijiezhao 3 년 전
부모
커밋
402543ca05

+ 43 - 11
src/main/java/com/caimei/modules/order/service/NewOrderService.java

@@ -343,20 +343,52 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
                 isUpdateUserMoney = true;
             }
             if (newOrder.getBalancePayFee() != null && newOrder.getBalancePayFee() > 0) {
+                //线上余额>0优先抵扣
+                Double onlineMoney = cmUserDao.findOnlineMoney(newOrder.getUserID());
+                Double userMoney = cmUserDao.findUserMoney(newOrder.getUserID());
+                //线上使用余额
+                Double onlineUseMoney = 0d;
+                //线下使用余额
+                Double userUseMoney = 0d;
+                //可用余额
+                Double ableUserMoney = cmUserDao.findAbleUserMoney(newOrder.getUserID());
+                if (onlineMoney > newOrder.getBalancePayFee()) {
+                    onlineUseMoney = newOrder.getBalancePayFee();
+                } else {
+                    userUseMoney = newOrder.getBalancePayFee() - onlineMoney;
+                }
+//                ableUserMoney = MathUtil.sub(ableUserMoney, MathUtil.add(onlineUseMoney, userUseMoney)).doubleValue();
+//                onlineMoney = MathUtil.sub(onlineMoney, onlineUseMoney).doubleValue();
+//                userMoney = MathUtil.sub(userMoney, userUseMoney).doubleValue();
                 if (!isUpdateUserMoney) {
-                    // 更新用户余额
+                    // 更新用户可用余额,不从user表减线上/线下余额
                     cmUserDao.updateAbleUserMoney(newOrder.getBpOrderUserinfo());
                 }
-                //添加余额收支记录
-                CmUserBalanceRecord cmUserBalanceRecord = new CmUserBalanceRecord();
-                cmUserBalanceRecord.setUserId(newOrder.getUserID());
-                cmUserBalanceRecord.setType("2");
-                cmUserBalanceRecord.setBalanceType("1");
-                cmUserBalanceRecord.setAddDate(new Date());
-                cmUserBalanceRecord.setAmount(String.valueOf(newOrder.getBalancePayFee()));
-                cmUserBalanceRecord.setOrderId(newOrder.getOrderID());
-                cmUserBalanceRecord.setDelFlag("0");
-                cmUserBalanceRecordService.insertUserBalanceRecord(cmUserBalanceRecord);
+                Date date = new Date();
+                if (onlineUseMoney > 0) {
+                    //添加余额收支记录
+                    CmUserBalanceRecord cmUserBalanceRecord = new CmUserBalanceRecord();
+                    cmUserBalanceRecord.setUserId(newOrder.getUserID());
+                    cmUserBalanceRecord.setType("2");
+                    cmUserBalanceRecord.setBalanceType("10");
+                    cmUserBalanceRecord.setAddDate(date);
+                    cmUserBalanceRecord.setAmount(String.valueOf(onlineUseMoney));
+                    cmUserBalanceRecord.setOrderId(newOrder.getOrderID());
+                    cmUserBalanceRecord.setDelFlag("0");
+                    cmUserBalanceRecordService.insertUserBalanceRecord(cmUserBalanceRecord);
+                }
+                if (userUseMoney > 0) {
+                    //添加余额收支记录
+                    CmUserBalanceRecord cmUserBalanceRecord = new CmUserBalanceRecord();
+                    cmUserBalanceRecord.setUserId(newOrder.getUserID());
+                    cmUserBalanceRecord.setType("2");
+                    cmUserBalanceRecord.setBalanceType("1");
+                    cmUserBalanceRecord.setAddDate(date);
+                    cmUserBalanceRecord.setAmount(String.valueOf(userUseMoney));
+                    cmUserBalanceRecord.setOrderId(newOrder.getOrderID());
+                    cmUserBalanceRecord.setDelFlag("0");
+                    cmUserBalanceRecordService.insertUserBalanceRecord(cmUserBalanceRecord);
+                }
             }
 
             //订单客户

+ 6 - 0
src/main/java/com/caimei/modules/user/dao/CmUserDao.java

@@ -82,4 +82,10 @@ public interface CmUserDao extends CrudDao<CmUser> {
     Date findByConfirmTime(Integer userId);
 
     Integer findUserBeans(Integer userId);
+
+    Double findOnlineMoney(Integer userID);
+
+    Double findUserMoney(Integer userID);
+
+    Double findAbleUserMoney(Integer userID);
 }

+ 9 - 0
src/main/resources/mappings/modules/user/CmUserMapper.xml

@@ -608,4 +608,13 @@
 		from user
 		where userID = #{userId}
 	</select>
+	<select id="findOnlineMoney" resultType="java.lang.Double">
+		select onlineMoney from user where userID = #{userID}
+	</select>
+	<select id="findUserMoney" resultType="java.lang.Double">
+		select userMoney from user where userID = #{userID}
+	</select>
+	<select id="findAbleUserMoney" resultType="java.lang.Double">
+		select ableUserMoney from user where userID = #{userID}
+	</select>
 </mapper>