<?php
/**
 * OrderConst.php UTF-8
 * 订单相关常量
 *
 * @date    : 2018/4/25 15:04
 *
 * @license 这不是一个自由软件,未经授权不许任何使用和传播。
 * @author  : wuyonghong <wyh@huosdk.com>
 * @version : HUOSDK 8.0
 */

namespace huolib\constant;
class OrderConst {
    CONST PAY_STATUS_NOT          = 1;    //待支付
    CONST PAY_STATUS_SUC          = 2;  //订单支付成功
    CONST PAY_STATUS_FAIL         = 3;  //订单支付失败
    CONST RECEIPT_NOT_NEED        = 1;    //不需要发票
    CONST RECEIPT_ORDINARY        = 2;  //普通发票
    CONST RECEIPT_SPECIAL         = 3;  //专票
    CONST IS_RECEIPT_NO           = 1;    //未开
    CONST IS_RECEIPT_YES          = 2;  //已开
    CONST IS_RECEIPT_BACK         = 3;  //退款
    CONST CP_STATUS_NOT           = 1;    //未通知CP
    CONST CP_STATUS_SUC           = 2;  //通知CP成功
    CONST CP_STATUS_FAIL          = 3;  //通知CP失败
    CONST ORDER_IS_HANDLE         = 1;  //手动补单订单
    CONST PAY_SWITCH_YES          = 1;  //1为切换
    CONST PAY_SWITCH_NO           = 2;  //2为不切换
    CONST PAY_SWITCH_IOS_NO       = 3;  //3为IOS不切换 关闭支付
    CONST PAY_SWITCH_PAY_TYPE_1   = 1;  //1为直跳
    CONST PAY_SWITCH_PAY_TYPE_2   = 2;  //2为二维码
    CONST PAY_SWITCH_PAY_TYPE_4   = 4;  //4为客服跳转充值
    CONST PAY_SWITCH_STOP         = 3;  //3 为停充值
    CONST DTB_STATUS_NOT          = 1;  //1为渠道未分成
    CONST DTB_STATUS_SUC          = 2;  //2为渠道已分成
    CONST DTB_STATUS_FAIL         = 3;  //3 为渠道分成失败
    CONST WXPAY_STATUS_SUCCESS    = 'SUCCESS';  //支付成功
    CONST WXPAY_STATUS_REFUND     = 'REFUND';  //转入退款
    CONST WXPAY_STATUS_NOTPAY     = 'NOTPAY';  //未支付
    CONST WXPAY_STATUS_CLOSED     = 'CLOSED';  //已关闭
    CONST WXPAY_STATUS_REVOKED    = 'REVOKED';  //已撤销(刷卡支付)
    CONST WXPAY_STATUS_USERPAYING = 'USERPAYING';  //用户支付中
    CONST WXPAY_STATUS_PAYERROR   = 'PAYERROR';  //支付失败(其他原因,如银行返回失败)WXPAY_
    CONST PAY_HAS_PTB             = 2;  //2 包含平台币支付
    CONST PAY_IS_FIRST            = 2;  //2 表示为首充
    CONST REBATE_STATUS_NOT       = 1;  // 1 为待处理
    CONST REBATE_STATUS_SUC       = 2;  // 2 为成功
    CONST REBATE_STATUS_FAIL      = 3;  // 3 为失败
    const ORDER_PREFIX_DEFAULT    = 'd';
    const ORDER_PREFIX_TASK       = 'tk';
    /* Modified by wuyonghong BEGIN 2018/8/31 ISSUES:6626 有米订单  */
    const ORDER_PREFIX_TASK_YM = 'ym';
    /* END 2018/8/31 ISSUES:6626 */
    const ORDER_PREFIX_TASK_REG        = 'treg';
    const ORDER_PREFIX_RECHARGE        = 're';
    const CHANGE_TYPE_GIFTMONEY        = 1;  /* 1红包获取 */
    const CHANGE_TYPE_MASTER           = 4;  // 4收徒挣钱
    const CHANGE_TYPE_WITHDRAW         = 5;  // 5 提现
    const CHANGE_TYPE_TRY              = 6;  // 6试玩挣钱
    const CHANGE_TYPE_REG              = 8;  // 8注册挣钱
    const CHANGE_TYPE_SHOP             = 9;  // 9开店挣钱
    const CHANGE_TYPE_LOTTERY          = 10; // 10每日开奖
    const CHANGE_TYPE_CARD             = 11; // 11 办卡挣钱
    const CHANGE_TYPE_REBATE           = 13; // 13淘宝返利
    const AGENT_CHANGE_TYPE_RECHARGE   = 1; // 1为充值
    const AGENT_CHANGE_TYPE_BUY_TASK   = 2; // 2为购买广告
    const AGENT_CHANGE_TYPE_ADMIN_EDIT = 3; // 3为管理员调节
    const AGENT_CHANGE_TYPE_REFUND     = 80; // 80退款
    const AGENT_CHANGE_TYPE_OTHER      = 99; // 99为其它类型
    const ORDER_PRODUCT_ID_AC          = 'agent_charge'; //商品ID 广告主余额充值
    const ORDER_PRODUCT_NAME_AC        = '余额充值'; //商品名称 广告主余额充值
    const ORDER_SWITCH_LAST            = 2; //取最近的订单支付

    public static function getPayStatusMsg($status, $all = false) {
        $_msg = array(
            self::PAY_STATUS_NOT  => '未支付',
            self::PAY_STATUS_SUC  => '支付成功',
            self::PAY_STATUS_FAIL => '支付失败',
        );
        if (true == $all) {
            return $_msg;
        }
        if (!isset($_msg[$status])) {
            return false;
        }

        return $_msg[$status];
    }

    public static function getPayStatuss($inc = false) {
        $_statuses = self::getPayStatusMsg(null, true);
        if (true == $inc) {
            $_default = ["0" => "选择状态"];
            $_statuses = $_default + $_statuses;
        }

        return $_statuses;
    }

    /*开票类型*/
    public static function getReceiptMsg($type, $all = false) {
        $_msg = array(
            self::RECEIPT_NOT_NEED => '不需要发票',
            self::RECEIPT_ORDINARY => '普通发票',
            self::RECEIPT_SPECIAL  => '专票'
        );
        if (true == $all) {
            return $_msg;
        }
        if (!isset($_msg[$type])) {
            return false;
        }

        return $_msg[$type];
    }

    public static function getReceipts($inc = false) {
        $_type = self::getReceiptMsg(null, true);
        if (true == $inc) {
            $_default = ["0" => "选择类型"];
            $_type = $_default + $_type;
        }

        return $_type;
    }

    /*开票状态*/
    public static function getReceiptStatusMsg($type, $all = false) {
        $_msg = array(
            self::IS_RECEIPT_NO   => '未开发票',
            self::IS_RECEIPT_YES  => '已开发票',
            self::IS_RECEIPT_BACK => '退款'
        );
        if (true == $all) {
            return $_msg;
        }
        if (!isset($_msg[$type])) {
            return false;
        }

        return $_msg[$type];
    }

    public static function getReceiptStatuss($inc = false) {
        $_type = self::getReceiptStatusMsg(null, true);
        if (true == $inc) {
            $_default = ["0" => "选择状态"];
            $_type = $_default + $_type;
        }

        return $_type;
    }

    /**
     * 获取CP支付状态
     *
     * @param int  $status
     * @param bool $all
     *
     * @return array|bool|mixed
     */
    public static function getCpStatusMsg($status, $all = false) {
        $_msg = array(
            self::CP_STATUS_NOT  => '未通知CP',
            self::CP_STATUS_SUC  => '通知CP成功',
            self::CP_STATUS_FAIL => '通知CP失败',
        );
        if (true == $all) {
            return $_msg;
        }
        if (!isset($_msg[$status])) {
            return false;
        }

        return $_msg[$status];
    }

    /**
     * @param bool $inc
     *
     * @return array|bool|mixed
     */
    public static function getCpStatuses($inc = false) {
        $_cp_statuses = self::getCpStatusMsg(null, true);
        if (true == $inc) {
            $_default = ["0" => "选择状态"];
            $_cp_statuses = $_default + $_cp_statuses;
        }

        return $_cp_statuses;
    }

    public static function getChangeTypeMsg($type, $all = false) {
        $_msg = array(
            self::CHANGE_TYPE_MASTER       => '收徒挣钱',
            self::CHANGE_TYPE_WITHDRAW     => '提现',
            self::CHANGE_TYPE_TRY          => '试玩挣钱',
            self::CHANGE_TYPE_REG          => '注册挣钱',
            self::CHANGE_TYPE_SHOP         => '开店挣钱',
            self::CHANGE_TYPE_LOTTERY      => '每日开奖',
            self::CHANGE_TYPE_CARD         => '办卡挣钱',
            self::CHANGE_TYPE_REBATE       => '淘宝返利',
            self::AGENT_CHANGE_TYPE_REFUND => '退款',
            self::CHANGE_TYPE_GIFTMONEY    => '红包获取',
        );
        if (true == $all) {
            return $_msg;
        }
        if (!isset($_msg[$type])) {
            return false;
        }

        return $_msg[$type];
    }

    public static function getChangeTypes($inc = false) {
        $_types = self::getChangeTypeMsg(null, true);
        if (true == $inc) {
            $_default = ["0" => "选择类型"];
            $_types = $_default + $_types;
        }

        return $_types;
    }

    public static function getAgentChangeTypeMsg($type, $all = false) {
        $_msg = array(
            self::AGENT_CHANGE_TYPE_RECHARGE   => '充值',
            self::AGENT_CHANGE_TYPE_BUY_TASK   => '购买广告',
            self::AGENT_CHANGE_TYPE_ADMIN_EDIT => '管理员调节',
            self::AGENT_CHANGE_TYPE_REFUND     => '退款',
            self::AGENT_CHANGE_TYPE_OTHER      => '其它类型',
        );
        if (true == $all) {
            return $_msg;
        }
        if (!isset($_msg[$type])) {
            return false;
        }

        return $_msg[$type];
    }

    public static function getAgentChangeTypes($inc = false) {
        $_types = self::getAgentChangeTypeMsg(null, true);
        if (true == $inc) {
            $_default = ["0" => "选择类型"];
            $_types = $_default + $_types;
        }

        return $_types;
    }

    /**
     * 获取收入的修改类型
     */
    public static function getIncomeChangeType() {
        return [
            self::AGENT_CHANGE_TYPE_RECHARGE,
            self::CHANGE_TYPE_TRY,
            self::CHANGE_TYPE_REG,
            self::CHANGE_TYPE_SHOP,
            self::CHANGE_TYPE_LOTTERY,
            self::CHANGE_TYPE_CARD,
            self::CHANGE_TYPE_REBATE,
            self::AGENT_CHANGE_TYPE_REFUND,
            self::CHANGE_TYPE_GIFTMONEY,
        ];
    }
}