user(); $broken_time = intval(sys_config('extract_time')); $search_time = time() - 86400 * $broken_time; //可提现佣金 //返佣 + $brokerage_commission = UserBill::where(['uid' => $user['uid'], 'category' => 'brokerage_price']) ->where('add_time', '>', $search_time) ->where('pm', 1) ->sum('number'); //退款退的佣金 - $refund_commission = UserBill::where(['uid' => $user['uid'], 'category' => 'brokerage_price']) ->where('add_time', '>', $search_time) ->where('pm', 0) ->sum('number'); $data['broken_commission'] = bcsub($brokerage_commission, $refund_commission, 2); if ($data['broken_commission'] < 0) $data['broken_commission'] = 0; // return $data; $data['brokerage_price'] = $user['brokerage_price']; //可提现佣金 $data['commissionCount'] = $data['brokerage_price'] - $data['broken_commission']; $extractBank = sys_config('user_extract_bank') ?? []; //提现银行 $extractBank = str_replace("\r\n", "\n", $extractBank);//防止不兼容 $data['extractBank'] = explode("\n", is_array($extractBank) ? (isset($extractBank[0]) ? $extractBank[0] : $extractBank) : $extractBank); $data['minPrice'] = sys_config('user_extract_min_price');//提现最低金额 $data['extractInfo'] = UserExtract::userLastInfo($user['uid']); $data['extract_commission'] = sys_config('extract_commission', 0); return app('json')->successful($data); } /** * 提现申请 * @param Request $request * @return mixed */ public function cash(Request $request) { $extractInfo = UtilService::postMore([ ['alipay_code', ''], ['extract_type', ''], ['money', 0], ['name', ''], ['bankname', ''], ['cardnum', ''], ['weixin', ''], ], $request); if (time() - CacheService::get('UserExtract_' . $request->uid(), 0) < 10) return app('json')->fail('请勿连续多次提交'); else CacheService::set('UserExtract_' . $request->uid(), time()); if (!preg_match('/^(([1-9]\d*)|0)(\.\d{1-2})?$/', $extractInfo['money'])) return app('json')->fail('提现金额输入有误'); $user = $request->user(); $broken_time = intval(sys_config('extract_time')); $search_time = time() - 86400 * $broken_time; //可提现佣金 //返佣 + $brokerage_commission = UserBill::where(['uid' => $user['uid'], 'category' => 'brokerage_price']) ->where('add_time', '>', $search_time) ->where('pm', 1) ->where('status', 1) ->sum('number'); //退款退的佣金 - $refund_commission = UserBill::where(['uid' => $user['uid'],'category' => 'brokerage_price']) ->where('add_time', '>', $search_time) ->where('pm', 0) ->where('status', 1) ->sum('number'); $data['broken_commission'] = bcsub($brokerage_commission, $refund_commission, 2); if ($data['broken_commission'] < 0) $data['broken_commission'] = 0; $data['brokerage_price'] = $user['brokerage_price']; //可提现佣金 $commissionCount = $data['brokerage_price'] - $data['broken_commission']; if ($extractInfo['money'] > $commissionCount) return app('json')->fail('可提现佣金不足'); if (!$extractInfo['cardnum'] == '') if (!preg_match('/^([1-9]{1})(\d{14}|\d{18}|\d{15})$/', $extractInfo['cardnum'])) return app('json')->fail('银行卡号输入有误'); if (UserExtract::userExtract($request->user(), $extractInfo)) return app('json')->successful('申请提现成功!'); else return app('json')->fail(UserExtract::getErrorInfo('提现失败')); } /** * 银行卡 获取单个 * @param Request $request * @param $id * @return mixed * @throws DataNotFoundException * @throws ModelNotFoundException * @throws \think\exception\DbException */ public function bank_info(Request $request, $id) { $bankInfo = []; if ($id && is_numeric($id) && UserBank::be(['is_del' => 0, 'id' => $id, 'uid' => $request->uid()])) { $bankInfo = UserBank::find($id)->toArray(); } return app('json')->successful($bankInfo); } /** * 银行卡列表 * @param Request $request * @param $page * @param $limit * @return mixed */ public function bank_list(Request $request) { list($page, $limit) = UtilService::getMore([['page', 0], ['limit', 20]], $request, true); $list = UserBank::getUserValidAddressList($request->uid(), $page, $limit, 'id,bank_code,bank_address,is_default'); return app('json')->successful($list); } /** * 设置默认银行卡 * * @param Request $request * @return mixed */ public function bank_default_set(Request $request) { list($id) = UtilService::getMore([['id', 0]], $request, true); if (!$id || !is_numeric($id)) return app('json')->fail('参数错误!'); if (!UserBank::be(['is_del' => 0, 'id' => $id, 'uid' => $request->uid()])) return app('json')->fail('银行卡不存在!'); $res = UserBank::setDefaultAddress($id, $request->uid()); if (!$res) return app('json')->fail('银行卡不存在!'); else return app('json')->successful(); } /** * 获取默认银行卡 * @param Request $request * @return mixed */ public function bank_default(Request $request) { $defaultAddress = UserBank::getUserDefaultAddress($request->uid(), 'id,bank_code,bank_address,is_default'); if ($defaultAddress) { $defaultAddress = $defaultAddress->toArray(); return app('json')->successful('ok', $defaultAddress); } return app('json')->successful('empty', []); } /** * 修改 添加银行卡 * @param Request $request * @return mixed */ public function bank_edit(Request $request) { $bankInfo = UtilService::postMore([ ['bank_code', ''], ['is_default', false], ['bank_address', ''], ['id', 0], ], $request); if (!$bankInfo['bank_code'] == '') if (!preg_match('/^([1-9]{1})(\d{14}|\d{18}|\d{15})$/', $bankInfo['cardnum'])) return app('json')->fail('银行卡号输入有误'); if ($bankInfo['id'] && UserBank::be(['id' => $bankInfo['id'], 'uid' => $request->uid(), 'is_del' => 0])) { $id = $bankInfo['id']; unset($bankInfo['id']); if (UserBank::edit($bankInfo, $id, 'id')) { if ($bankInfo['is_default']) UserBank::setDefaultAddress($id, $request->uid()); return app('json')->successful(); } else return app('json')->fail('编辑银行卡失败!'); } else { $bankInfo['add_time'] = time(); if ($bank = UserBank::create($bankInfo)) { if ($bankInfo['is_default']) { UserBank::setDefaultAddress($bank->id, $request->uid()); } return app('json')->successful(['id' => $bank->id]); } else { return app('json')->fail('添加银行卡失败!'); } } } /** * 删除银行卡 * * @param Request $request * @return mixed */ public function bank_del(Request $request) { list($id) = UtilService::postMore([['id', 0]], $request, true); if (!$id || !is_numeric($id)) return app('json')->fail('参数错误!'); if (!UserBank::be(['is_del' => 0, 'id' => $id, 'uid' => $request->uid()])) return app('json')->fail('银行卡不存在!'); if (UserBank::edit(['is_del' => '1'], $id, 'id')) return app('json')->successful(); else return app('json')->fail('删除银行卡失败!'); } }