zhijiezhao 1 vuosi sitten
vanhempi
commit
256b7f8ee2

+ 2 - 0
src/main/java/com/caimei/modules/order/dao/NewShopOrderDao.java

@@ -195,4 +195,6 @@ public interface NewShopOrderDao extends CrudDao<NewShopOrder> {
     public int updateDelCmShopOrderByShopOrderIDs(@Param("shopOrderIDs") String[] shopOrderIDs,@Param("delFlag") Integer delFlag);
 
     List<NewShopOrder> getShopOrderlist(NewShopOrder newShopOrder);
+
+    void updateStatus(NewShopOrder shopOrder);
 }

+ 1 - 0
src/main/java/com/caimei/modules/order/entity/NewShopOrder.java

@@ -18,6 +18,7 @@ import java.util.List;
 @Data
 public class NewShopOrder extends DataEntity<NewShopOrder> {
 
+    private String closeReason;
     private Integer orderSeen;
     private OrderInvoice orderInvoice;
     private Integer clauseID;

+ 52 - 132
src/main/java/com/caimei/modules/order/service/NewOrderService.java

@@ -1835,6 +1835,30 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
         cmUserDao.updateMoney(user);
     }
 
+    @Transactional(readOnly = false)
+    public void setShopOrderBalance(CmUser user, Double amount, NewShopOrder order) {
+        if (UserType.isMaker(Integer.parseInt(user.getRegisterUserTypeID()))) {
+            return;
+        }
+        //0待确认
+        Integer status = order.getStatus();
+        logger.info("----------------------->原余额:" + user.getUserMoney() + "==原可用余额:" + user.getAbleUserMoney());
+        //减操作不更新可用余额
+        if (amount < 0d) {
+            if (!"0".equals(status)) {//待确认状态不需要修改余额,因为本身存在冻结余额不需要重复退回
+                user.setUserMoney(user.getUserMoney() + amount);
+            }
+        } else {
+            if (!"0".equals(status)) {//待确认状态不需要修改余额,因为本身存在冻结余额不需要重复退回
+                user.setUserMoney(user.getUserMoney() + amount);
+            }
+            user.setAbleUserMoney(user.getAbleUserMoney() + amount);
+        }
+        logger.info("----------------------->设置余额:" + amount);
+        logger.info("----------------------->当前余额:" + user.getUserMoney() + "==当前可用余额:" + user.getAbleUserMoney());
+        cmUserDao.updateMoney(user);
+    }
+
     /**
      * 发货
      *
@@ -2872,57 +2896,51 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
 
     public void cancelShopOrder(NewShopOrder shopOrder) {
         //余额退回原账户
-        CmUser user = cmUserDao.get(order.getUserID().toString());
-        if (order.getBalancePayFee() > 0) {
-            setBalance(user, order.getBalancePayFee(), order);
+        CmUser user = cmUserDao.get(shopOrder.getUserID().toString());
+        if (shopOrder.getAccountAmount() > 0) {
+            setShopOrderBalance(user, shopOrder.getAccountAmount(), shopOrder);
             //取消收支记录
             CmUserBalanceRecord cmUserBalanceRecord = new CmUserBalanceRecord();
-            cmUserBalanceRecord.setUserId(order.getUserID());
-            cmUserBalanceRecord.setOrderId(order.getOrderID());
+            cmUserBalanceRecord.setUserId(shopOrder.getUserID());
+            cmUserBalanceRecord.setOrderId(shopOrder.getOrderID());
             cmUserBalanceRecord.setRemark("取消订单,余额记录无效-后台");
             cmUserBalanceRecord.setDelFlag("1");
             cmUserBalanceRecordService.updateBalanceRecord(cmUserBalanceRecord);
         }
-        order.setStatus("6");//订单状态变成交易关闭 6
-        order.setCloseReason("后台手动关闭");//   订单取消原因
-        newOrderDao.updateStatus(order);
-        //二手订单取消订单,标记未售
-        if ("1".equals(order.getSecondHandOrderFlag())) {
-            List<NewOrderProduct> orderProducts = newOrderProductDao.findListByOrderID(orderID);
-            for (NewOrderProduct orderProduct : orderProducts) {
-                cmSecondHandDetailDao.updatSecondHnadBySold(orderProduct.getProductID());
-            }
-        }
-        //采美豆退回
-        if (order.getUserBeans() != null && order.getUserBeans() > 0) {
-            UserBeansHistory beansHistory = new UserBeansHistory();
-            beansHistory.setUserId(order.getUserID());
-            beansHistory.setOrderId(order.getOrderID());
-            beansHistory.setBeansType(9);
-            beansHistory.setType(1);
-            beansHistory.setNum(order.getUserBeans());
-            beansHistory.setPushStatus(0);
-            beansHistory.setAddTime(new Date());
-            newCmClubDao.insertBeansHistory(beansHistory);
-            int userBeans = user.getUserBeans() + order.getUserBeans();
-            cmUserDao.updateUserBeans(order.getUserID(), userBeans);
-        }
+        shopOrder.setStatus(4);//订单状态变成交易关闭 6
+        shopOrder.setCloseReason("后台手动关闭");//   订单取消原因
+        newShopOrderDao.updateStatus(shopOrder);
+
+        //todo 采美豆退回,当前版本采美豆暂时无效,先不处理
+//        if (shopOrder.getUserBeans() != null && order.getUserBeans() > 0) {
+//            UserBeansHistory beansHistory = new UserBeansHistory();
+//            beansHistory.setUserId(order.getUserID());
+//            beansHistory.setOrderId(order.getOrderID());
+//            beansHistory.setBeansType(9);
+//            beansHistory.setType(1);
+//            beansHistory.setNum(order.getUserBeans());
+//            beansHistory.setPushStatus(0);
+//            beansHistory.setAddTime(new Date());
+//            newCmClubDao.insertBeansHistory(beansHistory);
+//            int userBeans = user.getUserBeans() + order.getUserBeans();
+//            cmUserDao.updateUserBeans(order.getUserID(), userBeans);
+//        }
         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String current = dateFormat.format(new Date());
         MessageCenter messageCenter = new MessageCenter();
         messageCenter.setShopId(null);
-        messageCenter.setClubId(order.getClubID());
+        messageCenter.setClubId(shopOrder.getClubID());
         messageCenter.setUserType(1);
         messageCenter.setMessageType(1);
         messageCenter.setOrderMessageType(4);
         messageCenter.setContent("您的订单已成功取消!");
-        messageCenter.setOrderId(orderID);
+        messageCenter.setOrderId(shopOrder.getOrderID());
         messageCenter.setTime(current);
         messageCenterDao.addMessageCenter(messageCenter);
 
         //优惠券退回
-        if (order.getCouponAmount() > 0 && !"0".equals(order.getStatus())) {
-            CmCouponOrderRecord couponRecord = newOrderDao.findOrderCouponRecord(order.getOrderID());
+        if (shopOrder.getCouponAmount() > 0 && 0 != shopOrder.getStatus()) {
+            CmCouponOrderRecord couponRecord = newOrderDao.findOrderCouponRecord(shopOrder.getOrderID());
             if (couponRecord != null) {
                 CmCouponClub couponClub = cmCouponClubDao.get(couponRecord.getClubCouponId().toString());
                 couponClub.setOrderId(null);
@@ -2935,104 +2953,6 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
                 cmCouponClubDao.insert(couponClub);
             }
         }
-
-
-
-
-        Date date = new Date();
-        String curDateStr = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
-        String note = "【取消订单】";
-        // 余额退回原账户
-        if (null != shopOrder.getAccountAmount() && MathUtil.compare(shopOrder.getAccountAmount(), 0) > 0) {
-            CmUser user = cmUserDao.get(shopOrder.getUserID().toString());
-            double ableUserMoney = user.getAbleUserMoney();
-            double updateMoney = MathUtil.add(ableUserMoney, shopOrder.getAccountAmount()).doubleValue();
-            // 退回用户可用余额
-            orderClubMapper.updateAbleUserMoneyByUserId(updateMoney, shopOrder.getUserId());
-            log.info(note + ">>>>>>>>>>>可用余额退回原账户(update[user(ableUserMoney)])userId:" + shopOrder.getUserId() + ",shopOrderId:" + shopOrderId);
-            // 取消收支记录
-            BalanceRecordPo balanceRecord = new BalanceRecordPo();
-            balanceRecord.setUserId(shopOrder.getUserId());
-            balanceRecord.setShopOrderId(shopOrderId);
-            balanceRecord.setRemark("取消订单,余额记录无效");
-            balanceRecord.setDelFlag(1);
-            // 取消 余额收支记录
-            orderClubMapper.cancelBalanceRecord(balanceRecord);
-            log.info(note + ">>>>>>>>>>>>取消余额收支记录(update[cm_user_balance_record])shopOrderId:" + shopOrderId);
-        }
-        shopOrder.setStatus(4);
-        // 取消 订单
-        orderClubMapper.cancelMainShopOrder(shopOrder);
-        //二手订单取消订单, 二手商品标记未售
-        if (1 == shopOrder.getSecondHandOrderFlag()) {
-            List<OrderProductPo> orderProducts = orderClubMapper.getShopOrderProductList(shopOrderId);
-            orderProducts.forEach(product -> {
-                // 是否二手商品
-                boolean secondFlag = false;
-                if (null != product.getProductCategory() && 2 == product.getProductCategory()) {
-                    secondFlag = true;
-                }
-                // 二手仪器标记未售
-                if (secondFlag) {
-                    orderClubMapper.updateSecondStatus(product.getProductId(), 0);
-                }
-            });
-        }
-        // 子订单状态
-        List<Integer> shopOrderStatus = orderClubMapper.getShopOrderStatus(shopOrder.getOrderId());
-        boolean flag = false;
-        if (shopOrderStatus.stream().allMatch(s -> s == 4)) {
-            flag = true;
-        }
-        // 退回 采美豆
-        if (null != shopOrder.getUserBeans() && shopOrder.getUserBeans() > 0 && flag) {
-            UserBeansHistoryPo beansHistory = new UserBeansHistoryPo();
-            beansHistory.setUserId(shopOrder.getUserId());
-            beansHistory.setOrderId(shopOrder.getOrderId());
-            beansHistory.setBeansType(9);
-            beansHistory.setType(1);
-            beansHistory.setNum(shopOrder.getUserBeans());
-            beansHistory.setPushStatus(0);
-            beansHistory.setAddTime(date);
-            beansHistory.setDelFlag(0);
-            // 用户采美豆
-            Integer userBeans = baseMapper.getUserBeans(shopOrder.getUserId());
-            // 更新用户剩余采美豆数量
-            int beans = userBeans + beansHistory.getNum();
-            productService.updateUserBeans(beansHistory, beans, note);
-        }
-        // 客服确认注册机构,一天内取消有效
-        Integer clubStatus = baseMapper.getClubStatus(shopOrder.getUserId());
-        if (null != clubStatus && 94 == clubStatus) {
-            // 已冻结(客服确认机构)
-            // 查询最后的确认时间
-            Date confirmTime = baseMapper.getClubConfirmTime(shopOrder.getUserId());
-            if (confirmTime != null) {
-                Calendar calendar = Calendar.getInstance();
-                calendar.setTime(confirmTime);
-                calendar.add(Calendar.DATE, 1);
-                if (calendar.getTime().compareTo(new Date()) > 0) {
-                    // 机构状态修改为:已确认(客服确认机构)
-                    baseMapper.updateUserClubStatus(93, shopOrder.getUserId());
-                    baseMapper.updateClubStatus(93, shopOrder.getUserId());
-                }
-            }
-        }
-        //优惠券退回
-        if (MathUtil.compare(shopOrder.getCouponAmount(), 0) > 0) {
-            CouponOrderRecordPo couponRecord = orderClubMapper.getOrderCouponRecord(shopOrder.getOrderId(), shopOrder.getCouponClubId());
-            if (couponRecord != null) {
-                orderClubMapper.deleteCouponClubById(couponRecord.getClubCouponId());
-                CouponClubPo couponClub = orderClubMapper.getCouponClubById(couponRecord.getClubCouponId());
-                couponClub.setOrderId(null);
-                couponClub.setReturnedId(0);
-                couponClub.setSource(3);
-                couponClub.setStatus("1");
-                couponClub.setCreateDate(new Date());
-                couponClub.setUseDate(null);
-                couponClub.setDelFlag("0");
-                orderClubMapper.insertCouponClub(couponClub);
-            }
-        }
     }
+
 }

+ 8 - 0
src/main/resources/mappings/modules/order/ShopOrderMapper.xml

@@ -2775,6 +2775,14 @@
         </foreach>
     </update>
 
+    <update id="updateStatus">
+        UPDATE cm_shop_order
+        SET shopStatus      = #{status},
+            closeTime   = NOW(),
+            closeReason = #{closeReason}
+        WHERE shopOrderID = #{shopOrderID}
+    </update>
+
     <delete id="delCmShopOrderByShopOrderID" parameterType="String">
         delete
         from cm_shop_order