-1 && $model = $model->where('apply_status', '=', $apply_status); return $model->where('user_id', '=', $user_id) ->order(['create_time' => 'desc']) ->paginate($limit); } /** * 提交申请 */ public function submit($team, $data) { // 数据验证 $this->validation($team, $data); // 新增申请记录 $this->save(array_merge($data, [ 'user_id' => $team['user_id'], 'apply_status' => 10, 'app_id' => self::$app_id, ])); // 冻结用户资金 $team->freezeMoney($data['money']); return true; } /** * 数据验证 */ private function validation($team, &$data) { // 结算设置 $settlement = Setting::getItem('settlement'); // 最低提现佣金 if ($data['money'] <= 0) { throw new BaseException(['msg' => '提现金额不正确']); } if ($team['money'] <= 0) { throw new BaseException(['msg' => '当前用户没有可提现佣金']); } if ($data['money'] > $team['money']) { throw new BaseException(['msg' => '提现金额不能大于可提现佣金']); } if ($data['money'] < $settlement['min_money']) { throw new BaseException(['msg' => '最低提现金额为' . $settlement['min_money']]); } if (!in_array($data['pay_type'], $settlement['pay_type'])) { throw new BaseException(['msg' => '提现方式不正确']); } if ($data['pay_type'] == '20') { if (empty($data['alipay_name']) || empty($data['alipay_account'])) { throw new BaseException(['msg' => '请补全提现信息']); } } elseif ($data['pay_type'] == '30') { if (empty($data['bank_name']) || empty($data['bank_account']) || empty($data['bank_card'])) { throw new BaseException(['msg' => '请补全提现信息']); } } elseif ($data['pay_type'] == '10') { // 微信支付需要实名认证 $auth = UserAuth::detail($team['user_id']); if (empty($auth)) { throw new BaseException(['msg' => '请先到个人中心->设置->实名认证']); } elseif (!empty($auth) && $auth["auth_status"] != 1) { throw new BaseException(['msg' => '您的实名认证还未审核通过']); } } // 处理手续费 $data['fee_rate'] = $settlement['fee_rate']; if ($settlement['fee_rate']) { $data['fee_money'] = round($data['money'] * $settlement['fee_rate'] / 100, 2); $data['real_money'] = $data['money'] - $data['fee_money']; } else { $data['real_money'] = $data['money']; } // 提现条件 by lyzflash $this->checkCondition($team); } /** * 提现条件 */ private function checkCondition($team) { if ($team['grade']['cash_condition'] == 10) { return true; } $start_time = date('Y-m-01 00:00:00', time()); // 月头日期时间 $end_time = date('Y-m-t 23:59:59', time()); // 月末日期时间 // 获取本月新增的直推 $agent_model = new AgentUserModel; $new_agent = $agent_model->where('referee_id', '=', $team['user_id']) ->where('create_time', '>=', $start_time) ->where('create_time', '<=', $end_time) ->where('is_delete', '=', 0) ->column('user_id'); $user_ids = array_merge([$team['user_id']], $new_agent); $order_model = new OrderModel; $order_model = $order_model->where('user_id', 'IN', $user_ids) ->where('create_time', '>=', $start_time) ->where('create_time', '<=', $end_time) ->where('order_status', '=', 30); // 按当月自购 + 新增直推订单数 if ($team['grade']['cash_condition'] == 20 && $order_model->count() < $team['grade']['cash_order_num']) { throw new BaseException(['msg' => '您需要自购订单或直推订单数满' . $team['grade']['cash_order_num'] . '单才能提现']); } // 按当月自购 + 新增直推订单金额 if ($team['grade']['cash_condition'] == 30 && $order_model->sum('total_price') < $team['grade']['cash_order_money']) { throw new BaseException(['msg' => '您需要自购订单或直推订单金额满' . $team['grade']['cash_order_num'] . '元才能提现']); } } }