|
|
@@ -1,676 +1,290 @@
|
|
|
-<?php
|
|
|
-/**
|
|
|
- * 重庆赤晓店信息科技有限公司
|
|
|
- * https://www.chixiaodian.com
|
|
|
- * Copyright (c) 2023 赤店商城 All rights reserved.
|
|
|
- */
|
|
|
-namespace app\models;
|
|
|
-
|
|
|
-use Yii;
|
|
|
-use yii\db\ActiveRecord;
|
|
|
-use yii\behaviors\TimestampBehavior;
|
|
|
-
|
|
|
-/**
|
|
|
- * This is the model class for table "{{%cash}}".
|
|
|
- *
|
|
|
- * @property int $id
|
|
|
- * @property int $user_id 用户id
|
|
|
- * @property int $store_id 商城id
|
|
|
- * @property float $price 提现金额
|
|
|
- * @property int $status 申请状态 0--申请中 1--确认申请 2--已打款 3--驳回 5--余额通过
|
|
|
- * @property int $is_delete 是否删除
|
|
|
- * @property int|null $created_at 添加時間
|
|
|
- * @property int $pay_time 付款
|
|
|
- * @property int $type 支付方式 0--微信支付 1--支付宝 2--银行卡 3--余额
|
|
|
- * @property string|null $mobile 支付宝账号
|
|
|
- * @property string|null $name 支付宝姓名
|
|
|
- * @property string|null $bank_name 开户行名称
|
|
|
- * @property string|null $bank_branch 银行支行
|
|
|
- * @property int|null $pay_type 打款方式 0--之前未统计的 1--微信自动打款 2--手动打款
|
|
|
- * @property string|null $order_no 微信自动打款订单号
|
|
|
- * @property float $service_charge 提现手续费
|
|
|
- * @property int|null $cash_type 0、正常,1、自提点提现
|
|
|
- * @property int|null $updated_at 更新时间
|
|
|
- * @property int $md_id 门店id
|
|
|
- * @property int $wx_cash_status 微信转账状态:-1未提交微信状态 0初始状态 1转账成功 2转账失败 3待确认 4转账中
|
|
|
- * @property string $wx_cash_error 微信转账失败错误原因
|
|
|
- * @property int $is_platform_transfers 微信新版打款使用平台商户号
|
|
|
- * @property int $wx_cash_type 微信转账类型:0=商家转账到零钱;1=新版商家转账
|
|
|
- * @property string $wx_cash_state 微信新版转账状态 ACCEPTED: 转账已受理;PROCESSING: 转账处理中;WAIT_USER_CONFIRM: 待收款用户确认;TRANSFERING: 转账结果尚未明确;SUCCESS: 转账成功;FAIL: 转账失败;CANCELING: 商户撤销请求受理成功;CANCELLED: 转账撤销完成
|
|
|
- * @property string $wx_cash_result_info 微信新版提现返回结果
|
|
|
- */
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-class Cash extends \yii\db\ActiveRecord
|
|
|
-{
|
|
|
- /**
|
|
|
- * {@inheritdoc}
|
|
|
- */
|
|
|
- public static function tableName()
|
|
|
- {
|
|
|
- return '{{%cash}}';
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 已删除
|
|
|
- */
|
|
|
- const IS_DELETE_YES = 1;
|
|
|
-
|
|
|
- /**
|
|
|
- * 未删除
|
|
|
- */
|
|
|
- const IS_DELETE_NO = 0;
|
|
|
-
|
|
|
- /**
|
|
|
- * 申请中
|
|
|
- */
|
|
|
- const STATUS_APPLY = 0;
|
|
|
-
|
|
|
- /**
|
|
|
- * 确认申请
|
|
|
- */
|
|
|
- const STATUS_CONFIRM = 1;
|
|
|
-
|
|
|
- /**
|
|
|
- * 灵工待打款
|
|
|
- */
|
|
|
- const STATUS_LG_CONFIRM = 6;
|
|
|
-
|
|
|
- /**
|
|
|
- * 已打款
|
|
|
- */
|
|
|
- const STATUS_GIVEN = 2;
|
|
|
-
|
|
|
- /**
|
|
|
- * 驳回
|
|
|
- */
|
|
|
- const STATUS_REFUSE = 3;
|
|
|
-
|
|
|
- /**
|
|
|
- * 手动打款
|
|
|
- */
|
|
|
- const STATUS_HAND = 4;
|
|
|
-
|
|
|
- /**
|
|
|
- * 余额通过
|
|
|
- */
|
|
|
- const STATUS_RECHARGE = 5;
|
|
|
-
|
|
|
- /**
|
|
|
- * 微信打款
|
|
|
- */
|
|
|
- const TYPE_WX = 0;
|
|
|
-
|
|
|
- /**
|
|
|
- * 支付宝打款
|
|
|
- */
|
|
|
- const TYPE_ALIPAY = 1;
|
|
|
-
|
|
|
- /**
|
|
|
- * 银行卡打款
|
|
|
- */
|
|
|
- const TYPE_BANK = 2;
|
|
|
-
|
|
|
- /**
|
|
|
- * 余额打款
|
|
|
- */
|
|
|
- const TYPE_RECHARGE = 3;
|
|
|
-
|
|
|
- /**
|
|
|
- * 灵工提现
|
|
|
- */
|
|
|
- const TYPE_LG = 4;
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 之前未统计的
|
|
|
- */
|
|
|
- const PAY_TYPE_NO = 0;
|
|
|
-
|
|
|
- /**
|
|
|
- * 微信自动打款
|
|
|
- */
|
|
|
- const PAY_TYPE_WX = 1;
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 灵工打款
|
|
|
- */
|
|
|
- const PAY_TYPE_LG = 4;
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 手动拨款
|
|
|
- */
|
|
|
- const PAY_TYPE_HAND = 2;
|
|
|
-
|
|
|
- /**
|
|
|
- * 分销商
|
|
|
- */
|
|
|
- const IS_CASH_TYPE_SHARE = 0;
|
|
|
- /**
|
|
|
- * 自提点
|
|
|
- */
|
|
|
- const IS_CASH_TYPE_SHOP = 1;
|
|
|
- /**
|
|
|
- * 门店
|
|
|
- */
|
|
|
- const IS_CASH_TYPE_MD = 2;
|
|
|
- /**
|
|
|
- * 上门服务师傅分佣
|
|
|
- */
|
|
|
- const IS_CASH_TYPE_WORKER = 6;
|
|
|
- /**
|
|
|
- * 余额提现
|
|
|
- */
|
|
|
- const IS_CASH_TYPE_BALANCE = 7;
|
|
|
- /**
|
|
|
- * 区域代理佣金提现
|
|
|
- */
|
|
|
- const IS_CASH_TYPE_AREA_AGENT = 8;
|
|
|
- /**
|
|
|
- * 店铺内多商户提现
|
|
|
- */
|
|
|
- const IS_CASH_TYPE_MCH = 9;
|
|
|
- /**
|
|
|
- * 团队分红提现
|
|
|
- */
|
|
|
- const IS_CASH_TYPE_TEAM_BONUS = 10;
|
|
|
- /**
|
|
|
- * 团队业绩分红提现
|
|
|
- */
|
|
|
- const IS_CASH_TYPE_TEAM_GRADES = 11;
|
|
|
-
|
|
|
- /**
|
|
|
- * 37拼购分佣提现
|
|
|
- */
|
|
|
- const IS_CASH_TYPE_SHARE_GROUP_PURCHASE = 12;
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 超级卖货系统提现
|
|
|
- */
|
|
|
- const IS_CASH_TYPE_SUPER_SALES = 13;
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 增值积分系统提现
|
|
|
- */
|
|
|
- const IS_CASH_TYPE_INTEGRAL_APPRECIATION = 14;
|
|
|
-
|
|
|
- /**
|
|
|
- * 本地公排
|
|
|
- */
|
|
|
- const IS_CASH_TYPE_LOCAL_PUBLIC_RANKING = 15;
|
|
|
-
|
|
|
-
|
|
|
- const WX_CASH_STATUS_INIT = 0;//初始态。 系统转账校验中
|
|
|
- const WX_CASH_STATUS_SUCCESS = 1;//成功
|
|
|
- const WX_CASH_STATUS_FAIL = 2;//失败
|
|
|
- const WX_CASH_STATUS_WAIT_PAY = 3;//待确认 。待商户确认, 符合免密条件时, 系统会自动扭转为转账中
|
|
|
- const WX_CASH_STATUS_PROCESSING = 4;//转账中。正在处理中,转账结果尚未明确
|
|
|
- /**
|
|
|
- * 微信转账状态
|
|
|
- */
|
|
|
- const WX_CASH_STATUS_ARR = [
|
|
|
- 'INIT' => 0,//初始态。 系统转账校验中
|
|
|
- 'SUCCESS' => 1,//成功
|
|
|
- 'FAIL' => 2,//失败
|
|
|
- 'WAIT_PAY' => 3,//待确认 。待商户确认, 符合免密条件时, 系统会自动扭转为转账中
|
|
|
- 'PROCESSING' => 4,//转账中。正在处理中,转账结果尚未明确
|
|
|
- ];
|
|
|
-
|
|
|
- const WX_CASH_STATUS_OLD_NAME = [
|
|
|
- 0 => '系统转账校验中',
|
|
|
- 1 => '成功',
|
|
|
- 2 => '失败',
|
|
|
- 3 => '待商户确认',
|
|
|
- 4 => '转账中',
|
|
|
- ];
|
|
|
-
|
|
|
- const WX_CASH_FAIL_REASON = [
|
|
|
- "ACCOUNT_FROZEN" => "该用户账户被冻结",
|
|
|
- "REAL_NAME_CHECK_FAIL" => "收款人未实名认证,需要用户完成微信实名认证",
|
|
|
- "NAME_NOT_CORRECT" => "收款人姓名校验不通过,请核实信息",
|
|
|
- "OPENID_INVALID" => "Openid格式错误或者不属于商家公众账号",
|
|
|
- "TRANSFER_QUOTA_EXCEED" => "超过用户单笔收款额度,核实产品设置是否准确",
|
|
|
- "DAY_RECEIVED_QUOTA_EXCEED" => "超过用户单日收款额度,核实产品设置是否准确",
|
|
|
- "MONTH_RECEIVED_QUOTA_EXCEED" => "超过用户单月收款额度,核实产品设置是否准确",
|
|
|
- "DAY_RECEIVED_COUNT_EXCEED" => "超过用户单日收款次数,核实产品设置是否准确",
|
|
|
- "PRODUCT_AUTH_CHECK_FAIL" => "未开通该权限或权限被冻结,请核实产品权限状态",
|
|
|
- "OVERDUE_CLOSE" => "超过系统重试期,系统自动关闭",
|
|
|
- "ID_CARD_NOT_CORRECT" => "收款人身份证校验不通过,请核实信息",
|
|
|
- "ACCOUNT_NOT_EXIST" => "该用户账户不存在",
|
|
|
- "TRANSFER_RISK" => "该笔转账可能存在风险,已被微信拦截",
|
|
|
- "OTHER_FAIL_REASON_TYPE" => "其它失败原因",
|
|
|
- "REALNAME_ACCOUNT_RECEIVED_QUOTA_EXCEED" => "用户账户收款受限,请引导用户在微信支付查看详情",
|
|
|
- "RECEIVE_ACCOUNT_NOT_PERMMIT" => "未配置该用户为转账收款人,请在产品设置中调整,添加该用户为收款人",
|
|
|
- "PAYEE_ACCOUNT_ABNORMAL" => "用户账户收款异常,请联系用户完善其在微信支付的身份信息以继续收款",
|
|
|
- "PAYER_ACCOUNT_ABNORMAL" => "商户账户付款受限,可前往商户平台获取解除功能限制指引",
|
|
|
- "TRANSFER_SCENE_UNAVAILABLE" => "该转账场景暂不可用,请确认转账场景ID是否正确",
|
|
|
- "TRANSFER_SCENE_INVALID" => "你尚未获取该转账场景,请确认转账场景ID是否正确",
|
|
|
- "TRANSFER_REMARK_SET_FAIL" => "转账备注设置失败, 请调整后重新再试",
|
|
|
- "RECEIVE_ACCOUNT_NOT_CONFIGURE" => "请前往商户平台-商家转账到零钱-前往功能-转账场景中添加",
|
|
|
- "BLOCK_B2C_USERLIMITAMOUNT_BSRULE_MONTH" => "超出用户单月转账收款20w限额,本月不支持继续向该用户付款",
|
|
|
- "BLOCK_B2C_USERLIMITAMOUNT_MONTH" => "用户账户存在风险收款受限,本月不支持继续向该用户付款",
|
|
|
- "MERCHANT_REJECT" => "商户员工(转账验密人)已驳回转账",
|
|
|
- "MERCHANT_NOT_CONFIRM" => "商户员工(转账验密人)超时未验密"
|
|
|
- ];
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- public static $status = [
|
|
|
- '待审核',
|
|
|
- '待打款',
|
|
|
- '已打款',
|
|
|
- '无效',
|
|
|
- '已打款',
|
|
|
- '已打款',
|
|
|
- '灵工待打款',
|
|
|
- '灵工打款失败',
|
|
|
- ];
|
|
|
- public static $type = [
|
|
|
- self::TYPE_WX => '微信',
|
|
|
- self::TYPE_ALIPAY => '支付宝',
|
|
|
- self::TYPE_BANK => '银行卡',
|
|
|
- self::TYPE_RECHARGE => '余额',
|
|
|
- self::TYPE_LG => '灵工',
|
|
|
- ];
|
|
|
-
|
|
|
-
|
|
|
- const WX_CASH_TYPE_OLD = 0;//微信转账类型:0=商家转账到零钱;
|
|
|
- const WX_CASH_TYPE_NEW = 1;//微信转账类型:1=新版商家转账
|
|
|
-
|
|
|
- public static $wx_cash_state = [
|
|
|
- "ACCEPTED" => "转账已受理",
|
|
|
- "PROCESSING" => "转账处理中",//,转账结果尚未明确,如一直处于此状态,建议检查账户余额是否足够
|
|
|
- "WAIT_USER_CONFIRM" => "待收款用户确认",//,可拉起微信收款确认页面进行收款确认
|
|
|
- "TRANSFERING" => "转账结果尚未明确,可拉起微信收款确认页面再次重试确认收款",
|
|
|
- "SUCCESS" => "转账成功",
|
|
|
- "FAIL" => "转账失败",
|
|
|
- "CANCELING" => "商户撤销请求受理成功,该笔转账正在撤销中",
|
|
|
- "CANCELLED" => "转账撤销完成",
|
|
|
- ];
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- public function behaviors()
|
|
|
- {
|
|
|
- return [
|
|
|
- [
|
|
|
- 'class' => TimestampBehavior::class,
|
|
|
- 'attributes' => [
|
|
|
- ActiveRecord::EVENT_BEFORE_INSERT => ['created_at'],
|
|
|
- ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at']
|
|
|
- ]
|
|
|
- ]
|
|
|
- ];
|
|
|
- }
|
|
|
- /**
|
|
|
- * {@inheritdoc}
|
|
|
- */
|
|
|
- public function rules()
|
|
|
- {
|
|
|
- return [
|
|
|
- [['user_id', 'store_id', 'pay_time'], 'required'],
|
|
|
- [['md_id', 'mch_id', 'user_id', 'saas_id', 'store_id', 'status', 'is_delete', 'created_at', 'pay_time', 'type', 'pay_type', 'cash_type', 'updated_at', 'is_platform_transfers', 'wx_cash_type'], 'integer'],
|
|
|
- [['price', 'service_charge'], 'number'],
|
|
|
- [['mobile', 'name', 'order_no', 'bank_branch','lg_refuse_desc'], 'string', 'max' => 255],
|
|
|
- [['bank_name'], 'string', 'max' => 30],
|
|
|
- [['wx_cash_state', 'wx_cash_result_info'], 'string']
|
|
|
- ];
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * {@inheritdoc}
|
|
|
- */
|
|
|
- public function attributeLabels()
|
|
|
- {
|
|
|
- return [
|
|
|
- 'id' => 'ID',
|
|
|
- 'user_id' => '用户id',
|
|
|
- 'saas_id' => '商盟用户id',
|
|
|
- 'store_id' => '商城id',
|
|
|
- 'price' => '提现金额',
|
|
|
- 'status' => '申请状态 0--申请中 1--确认申请 2--已打款 3--驳回 5--余额通过',
|
|
|
- 'is_delete' => '是否删除',
|
|
|
- 'created_at' => '添加時間',
|
|
|
- 'pay_time' => '付款',
|
|
|
- 'type' => '支付方式 0--微信支付 1--支付宝 2--银行卡 3--余额',
|
|
|
- 'mobile' => '支付宝账号',
|
|
|
- 'name' => '支付宝姓名',
|
|
|
- 'bank_name' => '开户行名称',
|
|
|
- 'pay_type' => '打款方式 0--之前未统计的 1--微信自动打款 2--手动打款',
|
|
|
- 'order_no' => '微信自动打款订单号',
|
|
|
- 'service_charge' => '提现手续费',
|
|
|
- 'cash_type' => '0、正常,1、自提点提现',
|
|
|
- 'updated_at' => '更新时间',
|
|
|
- 'bank_branch' => '银行支行',
|
|
|
- ];
|
|
|
- }
|
|
|
-
|
|
|
- public function afterSave($insert, $changedAttributes)
|
|
|
- {
|
|
|
- parent::afterSave($insert, $changedAttributes);
|
|
|
- \app\modules\admin\models\TeamBonusForm::afterCashSave($insert, $changedAttributes, $this);
|
|
|
-
|
|
|
-
|
|
|
- if ($insert) {
|
|
|
- $cash_type = '';
|
|
|
- //分销
|
|
|
- if ($this->cash_type == self::IS_CASH_TYPE_SHARE) {
|
|
|
- $cash_type = CashExt::CASH_TYPE_SHARE;
|
|
|
- }
|
|
|
- //股东
|
|
|
- if ($this->cash_type == 3) {
|
|
|
- $cash_type = CashExt::CASH_TYPE_SHARE_HOLDER;
|
|
|
- }
|
|
|
- //区域代理
|
|
|
- if ($this->cash_type == self::IS_CASH_TYPE_AREA_AGENT) {
|
|
|
- $cash_type = CashExt::CASH_TYPE_AREA_DIVIDEND;
|
|
|
- }
|
|
|
- //团队级差分红
|
|
|
- if ($this->cash_type == self::IS_CASH_TYPE_TEAM_BONUS) {
|
|
|
- $cash_type = CashExt::CASH_TYPE_TEAM_BONUS;
|
|
|
- }
|
|
|
- //37拼购
|
|
|
- if ($this->cash_type == self::IS_CASH_TYPE_SHARE_GROUP_PURCHASE) {
|
|
|
- $cash_type = CashExt::CASH_TYPE_SHARE_GROUP;
|
|
|
- }
|
|
|
- //超级卖货系统
|
|
|
- if ($this->cash_type == self::IS_CASH_TYPE_SUPER_SALES) {
|
|
|
- $cash_type = CashExt::CASH_TYPE_SUPER_SALES;
|
|
|
- }
|
|
|
- //超级卖货系统
|
|
|
- if ($this->cash_type == self::IS_CASH_TYPE_INTEGRAL_APPRECIATION) {
|
|
|
- $cash_type = CashExt::CASH_TYPE_INTEGRAL_APPRECIATION;
|
|
|
- }
|
|
|
- // 本地公排
|
|
|
- if ($this->cash_type == self::IS_CASH_TYPE_LOCAL_PUBLIC_RANKING) {
|
|
|
- $cash_type = CashExt::CASH_TYPE_LOCAL_PUBLIC_RANKING;
|
|
|
- }
|
|
|
- if (in_array($cash_type, CashExt::CASH_TYPE_ARR)) {
|
|
|
- $result = CashExt::cashFront($cash_type, $this->store_id, $this->price, $this->type);
|
|
|
- if (!$result['code']) {
|
|
|
- $saveResult = CashExt::cashExtSave(
|
|
|
- $this->id,
|
|
|
- CashExt::CASH_PRICE_TYPE_AMOUNT,
|
|
|
- $result['data']['amount_price'],
|
|
|
- $result['data']['cash_service_charge'],
|
|
|
- $result['data']['real_amount_price']
|
|
|
- );
|
|
|
- if (isset($saveResult) && $saveResult['code']) {
|
|
|
- debug_log($saveResult, 'cashExt.log');
|
|
|
- }
|
|
|
- $saveResult = CashExt::cashExtSave(
|
|
|
- $this->id,
|
|
|
- CashExt::CASH_PRICE_TYPE_INTEGRAL,
|
|
|
- $result['data']['integral_price'],
|
|
|
- $result['data']['cash_service_charge'],
|
|
|
- $result['data']['real_integral_price']
|
|
|
- );
|
|
|
- if (isset($saveResult) && $saveResult['code']) {
|
|
|
- debug_log($saveResult, 'cashExt.log');
|
|
|
- }
|
|
|
- $saveResult = CashExt::cashExtSave(
|
|
|
- $this->id,
|
|
|
- CashExt::CASH_PRICE_TYPE_BALANCE,
|
|
|
- $result['data']['balance_price'],
|
|
|
- $result['data']['cash_service_charge'],
|
|
|
- $result['data']['real_balance_price']
|
|
|
- );
|
|
|
- if (isset($saveResult) && $saveResult['code']) {
|
|
|
- debug_log($saveResult, 'cashExt.log');
|
|
|
- }
|
|
|
- } else {
|
|
|
- debug_log($result, 'cashExt.log');
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- debug_log(['status' => intval($this->status)], '20250520.log');
|
|
|
- if (in_array(intval($this->status), [self::STATUS_GIVEN, self::STATUS_HAND])) {
|
|
|
-
|
|
|
-
|
|
|
- debug_log(['cash_type' => $this->cash_type, 'type' => $this->type, 'pay_type' => $this->pay_type], '20250520.log');
|
|
|
- if ($this->cash_type == self::IS_CASH_TYPE_INTEGRAL_APPRECIATION) {
|
|
|
- $is_cash_pay = false;
|
|
|
- // 检测转账成功
|
|
|
- if (intval($this->status) === self::STATUS_GIVEN) {
|
|
|
- if (intval($this->type) === self::TYPE_WX && intval($this->pay_type) === Cash::PAY_TYPE_WX) { //如果是微信支付
|
|
|
- if (intval($this->wx_cash_type) === Cash::WX_CASH_TYPE_OLD) {//如果是旧版本微信转账
|
|
|
- if ($this->wx_cash_status == Cash::WX_CASH_STATUS_SUCCESS) {
|
|
|
- //成功
|
|
|
- $is_cash_pay = true;
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (!empty($this->wx_cash_state) && $this->wx_cash_state === 'SUCCESS') {
|
|
|
- //成功
|
|
|
- $is_cash_pay = true;
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- //成功
|
|
|
- $is_cash_pay = true;
|
|
|
- }
|
|
|
- } else {
|
|
|
- //成功
|
|
|
- $is_cash_pay = true;
|
|
|
- }
|
|
|
-
|
|
|
- debug_log(['is_cash_pay' => $is_cash_pay], '20250520.log');
|
|
|
- if ($is_cash_pay) {
|
|
|
- $result = IntegralAppreciationPoolSub::setPool($this->id, $this->store_id, IntegralAppreciationPoolSub::REFLUX_TYPE_WITHDRAW);
|
|
|
- debug_log($result, 'integralAppreciationPoolSub.log');
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- $cash_ext_list = CashExt::find()->where(['cash_id' => $this->id, 'is_pay' => 0,
|
|
|
- 'cash_price_type' => [
|
|
|
- CashExt::CASH_PRICE_TYPE_INTEGRAL,
|
|
|
- CashExt::CASH_PRICE_TYPE_BALANCE
|
|
|
- ]
|
|
|
- ])->asArray()->all();
|
|
|
- foreach ($cash_ext_list as $cash_ext_item) {
|
|
|
- $type = 1;
|
|
|
- if ($cash_ext_item['cash_price_type'] == CashExt::CASH_PRICE_TYPE_BALANCE) {
|
|
|
- $type = 2;
|
|
|
- }
|
|
|
- if ($cash_ext_item['cash_price_type'] == CashExt::CASH_PRICE_TYPE_INTEGRAL) {
|
|
|
- $type = 1;
|
|
|
- }
|
|
|
- if($cash_ext_item['real_price'] > 0){
|
|
|
- $result = AccountLog::saveLog($this->user_id, $cash_ext_item['real_price'], $type, 1, AccountLog::TYPE_CASH, 0, date('Y年m月d日') . "提现申请ID{$this->id}到账");
|
|
|
- if ($result) {
|
|
|
- $cashExt = CashExt::findOne($cash_ext_item['id']);
|
|
|
- $cashExt->is_pay = 1;
|
|
|
- $cashExt->save();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public static function getServiceMoney($cash)
|
|
|
- {
|
|
|
- if($cash['service_charge'] == 0){
|
|
|
- $price = $cash['price'];
|
|
|
- }else{
|
|
|
- $cashPrice = floatval($cash['price']);
|
|
|
- $price = $cashPrice * (100 - $cash['service_charge']) / 100;
|
|
|
- }
|
|
|
- return round($price, 2);
|
|
|
- }
|
|
|
- public static function getTypeName($item)
|
|
|
- {
|
|
|
- if(($item instanceof self) || is_array($item)){
|
|
|
- $item = $item['type'];
|
|
|
- }
|
|
|
- return self::$type[$item] ?? '';
|
|
|
- }
|
|
|
- public static function getStatusName($item)
|
|
|
- {
|
|
|
- if(($item instanceof self) || is_array($item)){
|
|
|
- $item = $item['status'];
|
|
|
- }
|
|
|
- return self::$status[$item] ?? '';
|
|
|
- }
|
|
|
-
|
|
|
- //获取所有打款状态 (包含微信商家转账到零钱和商家转账功能)
|
|
|
- public static function getCashStatusName($item) {
|
|
|
- if (intval($item['type']) === self::TYPE_WX && intval($item['pay_type']) === Cash::PAY_TYPE_WX) { //如果是微信支付
|
|
|
- if (intval($item['wx_cash_type']) === Cash::WX_CASH_TYPE_OLD) {//如果是旧版本微信转账
|
|
|
- if (in_array($item['wx_cash_status'], [//判断是否是商家转账到零钱版本
|
|
|
- -1,
|
|
|
- Cash::WX_CASH_STATUS_INIT,
|
|
|
- Cash::WX_CASH_STATUS_FAIL,
|
|
|
- Cash::WX_CASH_STATUS_SUCCESS,
|
|
|
- Cash::WX_CASH_STATUS_WAIT_PAY,
|
|
|
- Cash::WX_CASH_STATUS_PROCESSING
|
|
|
- ])) {
|
|
|
- if (intval($item['wx_cash_status']) === Cash::WX_CASH_STATUS_FAIL) {
|
|
|
- return $item['wx_cash_error'];
|
|
|
- }
|
|
|
- return self::WX_CASH_STATUS_OLD_NAME[$item['wx_cash_status']];
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (!empty($item['wx_cash_state'])) {
|
|
|
- return self::$wx_cash_state[$item['wx_cash_state']];
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- if (intval($item['pay_type']) === Cash::PAY_TYPE_HAND) {
|
|
|
- return '后台手动打款';
|
|
|
- }
|
|
|
- if (intval($item['pay_type']) === Cash::PAY_TYPE_LG) {
|
|
|
- if (intval($item['status']) === 3) {
|
|
|
- return '灵工打款:' . $item['lg_refuse_desc'];
|
|
|
- }
|
|
|
- return '灵工打款';
|
|
|
- }
|
|
|
-
|
|
|
- return self::$status[$item['status']];
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 分销提现驳回操作 只退款 不修改提现驳回状态
|
|
|
- * @param $cash_id
|
|
|
- */
|
|
|
- public static function cashRefuse($cash_id) {
|
|
|
- try {
|
|
|
- $cash = self::findOne($cash_id);
|
|
|
- $user = User::findOne(['id' => $cash->user_id]);
|
|
|
- if ($cash->cash_type == Cash::IS_CASH_TYPE_BALANCE) {
|
|
|
- $saveLog = AccountLog::saveLog($cash->user_id, $cash->price, AccountLog::TYPE_BALANCE, AccountLog::LOG_TYPE_INCOME, 0, 0, "余额提现被驳回,单号:{$cash->order_no}");
|
|
|
- if (!$saveLog) {
|
|
|
- throw new \Exception('余额提现方式驳回失败_');
|
|
|
- }
|
|
|
- } elseif ($cash->cash_type == Cash::IS_CASH_TYPE_MCH) {
|
|
|
- $saveLog = \app\models\MchAccountLog::saveLog($cash->mch_id, $cash->user_id, $cash->price, AccountLog::LOG_TYPE_INCOME, 0, '', "提现被驳回,单号:{$cash->order_no}", 0, 0);
|
|
|
- if ($saveLog['code']) {
|
|
|
- debug_log([
|
|
|
- 'type' => '店铺内多商户提现',
|
|
|
- 'error' => $saveLog
|
|
|
- ], 'wechat_cash_status.log');
|
|
|
- }
|
|
|
- } elseif ($cash->cash_type == Cash::IS_CASH_TYPE_MD) {
|
|
|
- $md = Md::findOne($cash->md_id);
|
|
|
- if ($md) {
|
|
|
- $md->cash_profit = bcadd($md->cash_profit, $cash->price, 2);
|
|
|
- if (!$md->save()) {
|
|
|
- throw new \Exception('门店提现_' . json_encode($md->errors, JSON_UNESCAPED_UNICODE));
|
|
|
- }
|
|
|
- }
|
|
|
- } elseif ($cash->cash_type == Cash::IS_CASH_TYPE_TEAM_GRADES) {
|
|
|
- $t = \Yii::$app->db->beginTransaction();
|
|
|
- try {
|
|
|
- $user->updateCounters(['price' => $cash->price]);
|
|
|
- $teamGrades = TeamGrades::findOne($cash->user_id);
|
|
|
- if ($teamGrades) {
|
|
|
- $teamGrades->updateCounters(['price' => $cash->price]);
|
|
|
- }
|
|
|
- $t->commit();
|
|
|
- } catch (\Exception $e) {
|
|
|
- $t->rollBack();
|
|
|
- throw new \Exception('团队业绩分红提现_' . $e->getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- } elseif ($cash->cash_type == Cash::IS_CASH_TYPE_SHARE_GROUP_PURCHASE) {
|
|
|
- $t = \Yii::$app->db->beginTransaction();
|
|
|
- try {
|
|
|
- $user->updateCounters(['price' => $cash->price]);
|
|
|
- $shareGroupPurchaseUsers = ShareGroupPurchaseUser::findOne(['user_id' => $cash->user_id]);
|
|
|
- if ($shareGroupPurchaseUsers) {
|
|
|
- $shareGroupPurchaseUsers->updateCounters(['price' => $cash->price]);
|
|
|
- }
|
|
|
- $t->commit();
|
|
|
- } catch (\Exception $e) {
|
|
|
- $t->rollBack();
|
|
|
- throw new \Exception('37拼购分佣提现_' . $e->getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- } elseif ($cash->cash_type == Cash::IS_CASH_TYPE_SUPER_SALES) {
|
|
|
- $t = \Yii::$app->db->beginTransaction();
|
|
|
- try {
|
|
|
- $user->updateCounters(['price' => $cash->price]);
|
|
|
- $superSalesUser = SuperSalesUser::findOne(['user_id' => $cash->user_id]);
|
|
|
- if ($superSalesUser) {
|
|
|
- $superSalesUser->updateCounters(['price' => $cash->price]);
|
|
|
- }
|
|
|
- $t->commit();
|
|
|
- } catch (\Exception $e) {
|
|
|
- $t->rollBack();
|
|
|
- throw new \Exception('超级卖货系统分佣提现_' . $e->getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- } elseif ($cash->cash_type == Cash::IS_CASH_TYPE_INTEGRAL_APPRECIATION) {
|
|
|
- $t = \Yii::$app->db->beginTransaction();
|
|
|
- try {
|
|
|
-
|
|
|
- $cashLog = IntegralAppreciationCashLog::findOne(['cash_id' => $cash->id]);
|
|
|
- if ($cashLog) {
|
|
|
- $integral_appreciation_user = IntegralAppreciationUser::findOne(['user_id' => $cash->user_id]);
|
|
|
- if ($integral_appreciation_user) {
|
|
|
- $integral_appreciation_user->updateCounters(['integral' => $cashLog->integral]);
|
|
|
- $result = IntegralAppreciationUserIntegralLog::saveIntegralLog($integral_appreciation_user->id, $cashLog->integral, IntegralAppreciationUserIntegralLog::TYPE_INCOME, IntegralAppreciationUserIntegralLog::SOURCE_TYPE_WITHDRAW_FAIL);
|
|
|
- if ($result['code']) {
|
|
|
- throw new \Exception('积分分佣提现_' . $result['msg']);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- $t->commit();
|
|
|
- } catch (\Exception $e) {
|
|
|
- $t->rollBack();
|
|
|
- throw new \Exception('超级卖货系统分佣提现_' . $e->getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- } else {
|
|
|
- $user->price = bcadd($user->price, $cash->price, 2);
|
|
|
- if (!$user->save()) {
|
|
|
- throw new \Exception('用户佣金增加失败_' . json_encode($user->errors, JSON_UNESCAPED_UNICODE));
|
|
|
- }
|
|
|
- }
|
|
|
- return true;
|
|
|
- } catch (\Exception $exception) {
|
|
|
- debug_log([
|
|
|
- 'type' => '用户佣金增加失败',
|
|
|
- 'error' => [
|
|
|
- 'message' => $exception->getMessage(),
|
|
|
- 'file' => $exception->getFile(),
|
|
|
- 'line' => $exception->getLine()
|
|
|
- ]
|
|
|
- ], 'wechat_cash_status.log');
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-}
|
|
|
+<?php
|
|
|
+/**
|
|
|
+ * 厦门云联储网络科技有限公司
|
|
|
+ * https://www.baokuaiyun.com
|
|
|
+ * Copyright (c) 2023 爆块云 All rights reserved.
|
|
|
+ */
|
|
|
+namespace app\models;
|
|
|
+
|
|
|
+use Yii;
|
|
|
+use yii\db\ActiveRecord;
|
|
|
+use yii\behaviors\TimestampBehavior;
|
|
|
+
|
|
|
+/**
|
|
|
+ * This is the model class for table "{{%cash}}".
|
|
|
+ *
|
|
|
+ * @property int $id
|
|
|
+ * @property int $user_id 用户id
|
|
|
+ * @property int $store_id 商城id
|
|
|
+ * @property float $price 提现金额
|
|
|
+ * @property int $status 申请状态 0--申请中 1--确认申请 2--已打款 3--驳回 5--余额通过
|
|
|
+ * @property int $is_delete 是否删除
|
|
|
+ * @property int|null $created_at 添加時間
|
|
|
+ * @property int $pay_time 付款
|
|
|
+ * @property int $type 支付方式 0--微信支付 1--支付宝 2--银行卡 3--余额
|
|
|
+ * @property string|null $mobile 支付宝账号
|
|
|
+ * @property string|null $name 支付宝姓名
|
|
|
+ * @property string|null $bank_name 开户行名称
|
|
|
+ * @property string|null $bank_branch 银行支行
|
|
|
+ * @property int|null $pay_type 打款方式 0--之前未统计的 1--微信自动打款 2--手动打款
|
|
|
+ * @property string|null $order_no 微信自动打款订单号
|
|
|
+ * @property float $service_charge 提现手续费
|
|
|
+ * @property int|null $cash_type 0、正常,1、自提点提现
|
|
|
+ * @property int|null $updated_at 更新时间
|
|
|
+ * @property int $md_id 门店id
|
|
|
+ * @property int $wx_cash_status 微信转账状态:0无状态 1转账成功 2转账失败 3待确认 4转账中
|
|
|
+ * @property string $wx_cash_error 微信转账失败错误原因
|
|
|
+ */
|
|
|
+class Cash extends \yii\db\ActiveRecord
|
|
|
+{
|
|
|
+ /**
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ public static function tableName()
|
|
|
+ {
|
|
|
+ return '{{%cash}}';
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 已删除
|
|
|
+ */
|
|
|
+ const IS_DELETE_YES = 1;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 未删除
|
|
|
+ */
|
|
|
+ const IS_DELETE_NO = 0;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 申请中
|
|
|
+ */
|
|
|
+ const STATUS_APPLY = 0;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 确认申请
|
|
|
+ */
|
|
|
+ const STATUS_CONFIRM = 1;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 已打款
|
|
|
+ */
|
|
|
+ const STATUS_GIVEN = 2;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 驳回
|
|
|
+ */
|
|
|
+ const STATUS_REFUSE = 3;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 手动打款
|
|
|
+ */
|
|
|
+ const STATUS_HAND = 4;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 余额通过
|
|
|
+ */
|
|
|
+ const STATUS_RECHARGE = 5;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 微信打款
|
|
|
+ */
|
|
|
+ const TYPE_WX = 0;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 支付宝打款
|
|
|
+ */
|
|
|
+ const TYPE_ALIPAY = 1;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 银行卡打款
|
|
|
+ */
|
|
|
+ const TYPE_BANK = 2;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 余额打款
|
|
|
+ */
|
|
|
+ const TYPE_RECHARGE = 3;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 之前未统计的
|
|
|
+ */
|
|
|
+ const PAY_TYPE_NO = 0;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 微信自动打款
|
|
|
+ */
|
|
|
+ const PAY_TYPE_WX = 1;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 手动拨款
|
|
|
+ */
|
|
|
+ const PAY_TYPE_HAND = 2;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分销商
|
|
|
+ */
|
|
|
+ const IS_CASH_TYPE_SHARE = 0;
|
|
|
+ /**
|
|
|
+ * 自提点
|
|
|
+ */
|
|
|
+ const IS_CASH_TYPE_SHOP = 1;
|
|
|
+ /**
|
|
|
+ * 上门服务师傅分佣
|
|
|
+ */
|
|
|
+ const IS_CASH_TYPE_WORKER = 6;
|
|
|
+ /**
|
|
|
+ * 余额提现
|
|
|
+ */
|
|
|
+ const IS_CASH_TYPE_BALANCE = 7;
|
|
|
+ /**
|
|
|
+ * 区域代理佣金提现
|
|
|
+ */
|
|
|
+ const IS_CASH_TYPE_AREA_AGENT = 8;
|
|
|
+ /**
|
|
|
+ * 店铺内多商户提现
|
|
|
+ */
|
|
|
+ const IS_CASH_TYPE_MCH = 9;
|
|
|
+
|
|
|
+
|
|
|
+ const WX_CASH_STATUS_INIT = 0;//初始态。 系统转账校验中
|
|
|
+ const WX_CASH_STATUS_SUCCESS = 1;//成功
|
|
|
+ const WX_CASH_STATUS_FAIL = 2;//失败
|
|
|
+ const WX_CASH_STATUS_WAIT_PAY = 3;//待确认 。待商户确认, 符合免密条件时, 系统会自动扭转为转账中
|
|
|
+ const WX_CASH_STATUS_PROCESSING = 4;//转账中。正在处理中,转账结果尚未明确
|
|
|
+ /**
|
|
|
+ * 微信转账状态
|
|
|
+ */
|
|
|
+ const WX_CASH_STATUS_ARR = [
|
|
|
+ 'INIT' => 0,//初始态。 系统转账校验中
|
|
|
+ 'SUCCESS' => 1,//成功
|
|
|
+ 'FAIL' => 2,//失败
|
|
|
+ 'WAIT_PAY' => 3,//待确认 。待商户确认, 符合免密条件时, 系统会自动扭转为转账中
|
|
|
+ 'PROCESSING' => 4,//转账中。正在处理中,转账结果尚未明确
|
|
|
+ ];
|
|
|
+
|
|
|
+ const WX_CASH_FAIL_REASON = [
|
|
|
+ "ACCOUNT_FROZEN" => "该用户账户被冻结",
|
|
|
+ "REAL_NAME_CHECK_FAIL" => "收款人未实名认证,需要用户完成微信实名认证",
|
|
|
+ "NAME_NOT_CORRECT" => "收款人姓名校验不通过,请核实信息",
|
|
|
+ "OPENID_INVALID" => "Openid格式错误或者不属于商家公众账号",
|
|
|
+ "TRANSFER_QUOTA_EXCEED" => "超过用户单笔收款额度,核实产品设置是否准确",
|
|
|
+ "DAY_RECEIVED_QUOTA_EXCEED" => "超过用户单日收款额度,核实产品设置是否准确",
|
|
|
+ "MONTH_RECEIVED_QUOTA_EXCEED" => "超过用户单月收款额度,核实产品设置是否准确",
|
|
|
+ "DAY_RECEIVED_COUNT_EXCEED" => "超过用户单日收款次数,核实产品设置是否准确",
|
|
|
+ "PRODUCT_AUTH_CHECK_FAIL" => "未开通该权限或权限被冻结,请核实产品权限状态",
|
|
|
+ "OVERDUE_CLOSE" => "超过系统重试期,系统自动关闭",
|
|
|
+ "ID_CARD_NOT_CORRECT" => "收款人身份证校验不通过,请核实信息",
|
|
|
+ "ACCOUNT_NOT_EXIST" => "该用户账户不存在",
|
|
|
+ "TRANSFER_RISK" => "该笔转账可能存在风险,已被微信拦截",
|
|
|
+ "OTHER_FAIL_REASON_TYPE" => "其它失败原因",
|
|
|
+ "REALNAME_ACCOUNT_RECEIVED_QUOTA_EXCEED" => "用户账户收款受限,请引导用户在微信支付查看详情",
|
|
|
+ "RECEIVE_ACCOUNT_NOT_PERMMIT" => "未配置该用户为转账收款人,请在产品设置中调整,添加该用户为收款人",
|
|
|
+ "PAYEE_ACCOUNT_ABNORMAL" => "用户账户收款异常,请联系用户完善其在微信支付的身份信息以继续收款",
|
|
|
+ "PAYER_ACCOUNT_ABNORMAL" => "商户账户付款受限,可前往商户平台获取解除功能限制指引",
|
|
|
+ "TRANSFER_SCENE_UNAVAILABLE" => "该转账场景暂不可用,请确认转账场景ID是否正确",
|
|
|
+ "TRANSFER_SCENE_INVALID" => "你尚未获取该转账场景,请确认转账场景ID是否正确",
|
|
|
+ "TRANSFER_REMARK_SET_FAIL" => "转账备注设置失败, 请调整后重新再试",
|
|
|
+ "RECEIVE_ACCOUNT_NOT_CONFIGURE" => "请前往商户平台-商家转账到零钱-前往功能-转账场景中添加",
|
|
|
+ "BLOCK_B2C_USERLIMITAMOUNT_BSRULE_MONTH" => "超出用户单月转账收款20w限额,本月不支持继续向该用户付款",
|
|
|
+ "BLOCK_B2C_USERLIMITAMOUNT_MONTH" => "用户账户存在风险收款受限,本月不支持继续向该用户付款",
|
|
|
+ "MERCHANT_REJECT" => "商户员工(转账验密人)已驳回转账",
|
|
|
+ "MERCHANT_NOT_CONFIRM" => "商户员工(转账验密人)超时未验密"
|
|
|
+ ];
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public static $status = [
|
|
|
+ '待审核',
|
|
|
+ '待打款',
|
|
|
+ '已打款',
|
|
|
+ '无效',
|
|
|
+ '已打款',
|
|
|
+ '已打款',
|
|
|
+ ];
|
|
|
+ public static $type = [
|
|
|
+ self::TYPE_WX => '微信',
|
|
|
+ self::TYPE_ALIPAY => '支付宝',
|
|
|
+ self::TYPE_BANK => '银行卡',
|
|
|
+ self::TYPE_RECHARGE => '余额',
|
|
|
+ ];
|
|
|
+
|
|
|
+
|
|
|
+ public function behaviors()
|
|
|
+ {
|
|
|
+ return [
|
|
|
+ [
|
|
|
+ 'class' => TimestampBehavior::class,
|
|
|
+ 'attributes' => [
|
|
|
+ ActiveRecord::EVENT_BEFORE_INSERT => ['created_at'],
|
|
|
+ ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at']
|
|
|
+ ]
|
|
|
+ ]
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ public function rules()
|
|
|
+ {
|
|
|
+ return [
|
|
|
+ [['user_id', 'store_id', 'pay_time'], 'required'],
|
|
|
+ [['md_id', 'mch_id', 'user_id', 'saas_id', 'store_id', 'status', 'is_delete', 'created_at', 'pay_time', 'type', 'pay_type', 'cash_type', 'updated_at'], 'integer'],
|
|
|
+ [['price', 'service_charge'], 'number'],
|
|
|
+ [['mobile', 'name', 'order_no', 'bank_branch'], 'string', 'max' => 255],
|
|
|
+ [['bank_name'], 'string', 'max' => 30],
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ public function attributeLabels()
|
|
|
+ {
|
|
|
+ return [
|
|
|
+ 'id' => 'ID',
|
|
|
+ 'user_id' => '用户id',
|
|
|
+ 'saas_id' => '商盟用户id',
|
|
|
+ 'store_id' => '商城id',
|
|
|
+ 'price' => '提现金额',
|
|
|
+ 'status' => '申请状态 0--申请中 1--确认申请 2--已打款 3--驳回 5--余额通过',
|
|
|
+ 'is_delete' => '是否删除',
|
|
|
+ 'created_at' => '添加時間',
|
|
|
+ 'pay_time' => '付款',
|
|
|
+ 'type' => '支付方式 0--微信支付 1--支付宝 2--银行卡 3--余额',
|
|
|
+ 'mobile' => '支付宝账号',
|
|
|
+ 'name' => '支付宝姓名',
|
|
|
+ 'bank_name' => '开户行名称',
|
|
|
+ 'pay_type' => '打款方式 0--之前未统计的 1--微信自动打款 2--手动打款',
|
|
|
+ 'order_no' => '微信自动打款订单号',
|
|
|
+ 'service_charge' => '提现手续费',
|
|
|
+ 'cash_type' => '0、正常,1、自提点提现',
|
|
|
+ 'updated_at' => '更新时间',
|
|
|
+ 'bank_branch' => '银行支行',
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function getServiceMoney($cash)
|
|
|
+ {
|
|
|
+ if($cash['service_charge'] == 0){
|
|
|
+ $price = $cash['price'];
|
|
|
+ }else{
|
|
|
+ $cashPrice = floatval($cash['price']);
|
|
|
+ $price = $cashPrice * (100 - $cash['service_charge']) / 100;
|
|
|
+ }
|
|
|
+ return round($price, 2);
|
|
|
+ }
|
|
|
+ public static function getTypeName($item)
|
|
|
+ {
|
|
|
+ if(($item instanceof self) || is_array($item)){
|
|
|
+ $item = $item['type'];
|
|
|
+ }
|
|
|
+ return self::$type[$item] ?? '';
|
|
|
+ }
|
|
|
+ public static function getStatusName($item)
|
|
|
+ {
|
|
|
+ if(($item instanceof self) || is_array($item)){
|
|
|
+ $item = $item['status'];
|
|
|
+ }
|
|
|
+ return self::$status[$item] ?? '';
|
|
|
+ }
|
|
|
+}
|