状态流程控制

    Date statusModifiedTime = new Date();//信息更新时间
    tradeOrder.setModifiedTime(statusModifiedTime);
    /**
     *  2. 数据更新
     */
    String staus = tradeOrder.getStatus();//待更新 状态

    String stausDB =  tradeOrderDB.getStatus();//数据库当前状态

    /**
     * 流程 状态 控制中心 
     */
    if(staus != null && !"".equals(staus)){

        logger.info("订单当前状态:"+stausDB);

        switch (stausDB){

// * WAIT_BUYER_PAY(等待买家付款)
// * WAIT_SELLER_SEND_GOODS(等待卖家发货,即:买家已付款)
// * WAIT_BUYER_CONFIRM_GOODS(等待买家确认收货,即:卖家已发货)
// * TRADE_BUYER_CONFIRM(买家确认收货,待评价)
// * TRADE_FINISHED(交易成功)
// * TRADE_CLOSED(付款以后用户退款成功,交易自动关闭)
// * TRADE_CLOSED_BY_MSHOP(付款以前,卖家主动关闭交易)
// * TRADE_CLOSED_BY_BUYER(付款以前,买家主动关闭交易)

            case "WAIT_BUYER_PAY":
                // 订单状态为  等待买家付款  只可以更改为WAIT_SELLER_SEND_GOODS  TRADE_CLOSED_BY_MSHOP  TRADE_CLOSED_BY_BUYER
                if(!(staus.equals("WAIT_SELLER_SEND_GOODS")) && !(staus.equals("TRADE_CLOSED_BY_MSHOP")) && !(staus.equals("TRADE_CLOSED_BY_BUYER"))){
                    //可更改的状态 为  买家取消 , 或 卖家 同意 ,拒绝, 等待买家发货 WAIT_BUYER_SEND_GOODS
                    throw new ParamException(BaseCode.PARAM_ERROR, "订单状态为  等待买家付款,不能更改为"+ staus);
                }

                // WAIT_SELLER_SEND_GOODS(等待卖家发货,即:买家已付款) 
                if(staus.equals("WAIT_SELLER_SEND_GOODS")){
                    tradeOrder.setPaymentTime(statusModifiedTime);

                }
                //TRADE_CLOSED_BY_MSHOP(付款以前,卖家主动关闭交易) 
                if(staus.equals("TRADE_CLOSED_BY_MSHOP")){

                }
                //TRADE_CLOSED_BY_BUYER(付款以前,买家主动关闭交易) 
                if(staus.equals("WAIT_SELLER_SEND_GOODS")){

                }
                break;

            case "WAIT_SELLER_SEND_GOODS":
                //WAIT_SELLER_SEND_GOODS(等待卖家发货,即:买家已付款)  只可以更改为WAIT_BUYER_CONFIRM_GOODS 
                if(!staus.equals("WAIT_BUYER_CONFIRM_GOODS")){
                    throw new ParamException(BaseCode.PARAM_ERROR, "订单已付款 等待卖家发货,不能更改为"+ staus);
                }
                //WAIT_BUYER_CONFIRM_GOODS(等待买家确认收货,即:卖家已发货) 
                if(staus.equals("WAIT_BUYER_CONFIRM_GOODS")){
                    tradeOrder.setSellerSendGoodsTime(statusModifiedTime);

                }
                break;
            case "WAIT_BUYER_CONFIRM_GOODS":
                // WAIT_BUYER_CONFIRM_GOODS(等待买家确认收货,即:卖家已发货)   只可以更改为TRADE_BUYER_CONFIRM 
                if(!staus.equals("TRADE_BUYER_CONFIRM")){
                    throw new ParamException(BaseCode.PARAM_ERROR, "订单卖家已发货,等待买家确认收货,不能更改为"+ staus);
                }
                //TRADE_BUYER_CONFIRM(买家确认收货,待评价) 
                if(staus.equals("TRADE_BUYER_CONFIRM")){
                    tradeOrder.setBuyerConfirmTime(statusModifiedTime);

                }
                break;
            case "TRADE_BUYER_CONFIRM":
                // TRADE_BUYER_CONFIRM(买家确认收货,待评价)    只可以更改为TRADE_FINISHED 
                if(!staus.equals("TRADE_FINISHED")){
                    throw new ParamException(BaseCode.PARAM_ERROR, "订单买家已经确认收货,不能更改为"+ staus);
                }
                //TRADE_FINISHED(交易成功)  
                if(staus.equals("TRADE_FINISHED")){
                    tradeOrder.setEvaluationTime(statusModifiedTime);
                }
                break;
            case "TRADE_FINISHED":
                if(staus != null){
                    throw new ParamException(BaseCode.PARAM_ERROR, "订单交易成功,不能更改为"+ staus);
                }
                break;
            case "TRADE_CLOSED_BY_MSHOP":
                if(staus != null){
                    throw new ParamException(BaseCode.PARAM_ERROR, "卖家主动关闭订单,不能更改为"+ staus);
                }
                break;
            case "TRADE_CLOSED_BY_BUYER":
                if(staus != null){
                    throw new ParamException(BaseCode.PARAM_ERROR, "买家主动关闭订单,不能更改为"+ staus);
                }
                break;
            default:
                throw new ParamException(BaseCode.PARAM_ERROR, "当前订单异常:"+ stausDB);

        }

    }


    /**
     * 订单在关闭状态下才可以 删除
     */

    Integer isBuyerDelete = tradeOrder.getIsBuyerDelete();
    Integer isDelete = tradeOrder.getIsDelete();
    Integer isSellerDelete = tradeOrder.getIsSellerDelete();

    if("TRADE_FINISHED".equals(stausDB) || "TRADE_CLOSED_BY_MSHOP".equals(stausDB) || "TRADE_CLOSED_BY_BUYER".equals(stausDB) ){ 
        /**
         *  买家 删除操作
         */
        if(isBuyerDelete != null && isBuyerDelete.equals(1)){
            tradeOrder.setBuyerDeleteTime(statusModifiedTime);
        }
        /**
         *  系统 删除操作
         */
        if(isDelete != null && isDelete.equals(1)){
            tradeOrder.setDeleteTime(statusModifiedTime);
        }
        /**
         *  卖家 删除操作
         */
        if(isSellerDelete != null && isSellerDelete.equals(1)){
            tradeOrder.setSellerDeleteTime(statusModifiedTime);
        }

    }else{

        if(isBuyerDelete != null && isBuyerDelete.equals(1)){
            throw new ParamException(BaseCode.PARAM_ERROR, "当前订单未关闭,不能删!订单状态为:"+ stausDB);
        }
        if(isSellerDelete != null && isSellerDelete.equals(1)){
            throw new ParamException(BaseCode.PARAM_ERROR, "当前订单未关闭,不能删!订单状态为:"+ stausDB);
        }
        if(isDelete != null && isDelete.equals(1)){
            throw new ParamException(BaseCode.PARAM_ERROR, "当前订单未关闭,不能删!订单状态为:"+ stausDB);
        }

    }


    //更新操作
    tradeOrderService.updateByPrimaryKeySelective(tradeOrder);

“`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值