param_data; $param['user_data'] = $request->user_data; Db::beginTransaction(); try { Validator::input($param, [ 'money' => Validator::notEmpty()->Number()->setName('还款金额'), 'type' => Validator::notEmpty()->intType()->setName('账户类型'), ]); if ($param['type'] == 1) { Validator::input($param, [ 'account_holder' => Validator::notEmpty()->setName('持卡人姓名'), 'affiliated_bank' => Validator::notEmpty()->setName('所属银行'), 'card_number' => Validator::notEmpty()->setName('银行卡号'), ]); } elseif ($param['type'] == 2) { Validator::input($param, [ 'card_number' => Validator::notEmpty()->setName('微信账号'), ]); } elseif ($param['type'] == 3) { Validator::input($param, [ 'card_number' => Validator::notEmpty()->setName('支付宝账号'), ]); } else { throw new \Exception('非法操作'); } $userlist = Db::table('wa_users')->where('id', $param['user_data']['id'])->first(); if ($userlist->refund_num <= 0) { throw new \Exception('还款机会不足!'); } $data = [ 'user_id' => $request->user_data['id'], 'order_no' => date('YmdHis') . mt_rand(1000, 9999), 'money' => $param['money'], 'type' => $param['type'], 'affiliated_bank' => Arr::get($param, 'affiliated_bank'), 'account_holder' => Arr::get($param, 'account_holder'), 'card_number' => Arr::get($param, 'card_number'), 'created_at' => date('Y-m-d H:i:s', time()), 'updated_at' => date('Y-m-d H:i:s', time()), ]; Db::table('wa_repayment')->insert($data); Db::table('wa_users')->where('id', $param['user_data']['id'])->decrement('refund_num', 1); } catch (\Throwable $exception) { Db::rollBack(); return error($exception->getMessage()); } Db::commit(); return success($param, '还款成功'); } #[Apidoc\Title("还款记录")] #[Apidoc\Url("api/repayment/stream.html")] #[Apidoc\Method("POST")] #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")] #[Apidoc\Param("page", type: "int", require: true, desc: "页面", mock: 1)] #[Apidoc\Param("limit", type: "int", require: true, desc: "输入条数", mock: 10)] #[Apidoc\Returned(name: "order_no", type: "string", require: true, desc: '订单号', default: '23213213213217182937291')] #[Apidoc\Returned(name: "money", type: "string", require: true, desc: '还款金额', default: '100.00')] #[Apidoc\Returned(name: "status", type: "string", require: true, desc: '提现状态 1 待审核 2打款中 3审核通过 4驳回', default: '1')] #[Apidoc\Returned(name: "type", type: "string", require: true, desc: '账户类型 1信用卡 2=网络机构', default: '1')] #[Apidoc\Returned(name: "account_holder", type: "string", require: true, desc: '开户人', default: '张三')] #[Apidoc\Returned(name: "affiliated_bank", type: "string", require: true, desc: '归属银行', default: '中国银行')] #[Apidoc\Returned(name: "card_number", type: "string", require: true, desc: '卡号|支付宝账号|微信账号', default: '12321321376763274682374681')] #[Apidoc\Returned(name: "created_at", type: "date", require: true, desc: '申请时间', default: '2023-05-20 23:49:49')] public function stream(Request $request) { $param = $request->param_data; $param['user_data'] = $request->user_data; try { Validator::input($param, [ 'page' => Validator::notEmpty()->intType()->setName('页码'), 'limit' => Validator::notEmpty()->intType()->setName('输出条数'), ]); $data = Db::table('wa_repayment') ->where('user_id', $request->user_data['id']) ->where('status', '!=', 0) ->where(function ($query) use ($param) { if (Arr::get($param, 'type')) { $query->where('type', $param['type']); } }) ->orderByDesc('id') ->paginate($param['limit'])->toArray(); } catch (\Throwable $exception) { return error($exception->getMessage()); } return success($data['data'], '成功', 200, $data['total']); } }