data['countList'] = OrderRepository::getInstance()->findOrderCount($this->authId); $this->data['markList'] = OrderRepository::getInstance()->auctionMarkList('', [$this->authId]); $this->data['biddingList'] = GoodsRepository::getInstance()->auctionBiddingList($this->authId); return $this->view(); } /** * 个人资料 * * @return View|Json * @throws RepositoryException */ public function profile() { $repo = AccountRepository::getInstance(); $item = $repo->findById($this->authId); if ($this->request->isPost()) { $post = input('post.'); $update = []; $update['headimgurl'] = $post['headimgurl'] ?? ''; $update['sex'] = $post['sex']; $update['nickname'] = $post['nickname']; if (!empty($post['nickname']) && $item['nickname'] !== $post['nickname']) { if ($item['nickname_time'] > 0) { return $this->json(4001, '每人仅先修改一次昵称,您已修改过了。'); } $update['nickname_time'] = $item['nickname_time'] + 1; } $item->save($update); return $this->json(); } $this->data['item'] = $item; return $this->view(); } /** * 我的订单 * * @return View */ public function order(): View { $accountId = $this->auth['id'] ?? 0; $tag = input('get.tag/s', 'waiting'); $this->data['items'] = OrderRepository::getInstance()->getOrderGoods($accountId, $tag); $this->data['tag'] = $tag; return $this->view(); } /** * 保证金 * * @return View * @throws RepositoryException */ public function deposit(): View { $accountId = $this->auth['id'] ?? 0; if (!$accountId) { $this->error('请先登录'); } $item = AccountRepository::getInstance()->findById($accountId, ['quota', 'id', 'deposit']); $this->data['item'] = $item; return $this->view(); } /** * 实名认证 * * @return View|Json * @throws RepositoryException */ public function realName() { $accountId = $this->auth['id'] ?? 0; $account = AccountRepository::getInstance()->findById($accountId); if ($this->request->isPost()) { if (!$account) { return $this->json(4001, '请先登录'); } if ($account['is_real_name']) { return $this->json(4002, '您已通过认证'); } $post = input('post.'); $validate = new VAccount(); if (!$validate->scene('real_name')->check($post)) { return $this->json(4003, $validate->getError()); } $post['is_real_name'] = 1; $account->save($post); return $this->json(); } $this->data['item'] = $account; return $this->view(); } /** * 个人账户 * * @return View * @throws RepositoryException */ public function info(): View { $accountId = $this->auth['id'] ?? 0; $item = AccountRepository::getInstance()->findById($accountId); $rechargeList = AccountRepository::getInstance()->fetchRechargeList($accountId); $withdrawalList = AccountRepository::getInstance()->fetchWithdrawalList($accountId); $this->data['item'] = $item; $this->data['rechargeList'] = $rechargeList['list']; $this->data['withdrawalList'] = $withdrawalList['list']; return $this->view(); } /** * 中标清单 * * @return View * @throws DbException */ public function biddingList(): View { $accountId = $this->auth['id'] ?? 0; $pageParams['query'] = input('get.'); $list = OrderRepository::getInstance()->auctionMarkList('', [$accountId], $pageParams); $this->data['list'] = $list; return $this->view(); } /** * 竞价清单 * * @return View */ public function biddingLog(): View { $list = GoodsRepository::getInstance()->auctionBiddingList($this->authId); $this->data['items'] = $list; return $this->view(); } /** * 关注的拍品 * * @return View * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function auctionCollection(): View { $accountId = $this->auth['id'] ?? 0; $items = AccountRepository::getInstance()->fetchCollection($accountId, GoodsRepository::TYPE_AUCTION); $this->data['items'] = $items; return $this->view(); } /** * 商品收藏 * * @return View * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function goodsCollection(): View { $accountId = $this->auth['id'] ?? 0; $items = AccountRepository::getInstance()->fetchCollection($accountId, GoodsRepository::TYPE_GOODS); $this->data['items'] = $items; return $this->view(); } /** * 地址管理 * * @return View * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function address(): View { $accountId = $this->auth['id'] ?? 0; //地址列表 $addressList = AccountRepository::getInstance()->findAddressByUid($accountId); $this->data['addressList'] = $addressList; return $this->view(); } /** * 地址详情 * * @return Json|View * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function addressDetail() { $resp = AccountRepository::getInstance(); $accountId = $this->auth['id'] ?? 0; $id = input('param.id/d', 0); $item = $resp->findAddressById($id); if ($this->request->isPost()) { $postItem = input('post.'); $postItem['user_id'] = $postItem['user_id'] ?? $accountId; $resp->saveAddress($postItem); return $this->json(); } $this->data['item'] = $item; return $this->view(); } /** * 地址删除 * * @return Json */ public function addressDel(): Json { if ($this->request->isPost()) { $id = input('post.id/d', 0); AccountRepository::getInstance()->delAddress($id); return $this->json(); } return $this->json(4002, '请求方式错误'); } /** * 修改密码 * * @return Json */ public function editPwd(): Json { $post = input('post.'); $accountId = $this->auth['id'] ?? 0; $validate = new VAccount(); if (!$validate->scene('edit_password')->check($post)) { return $this->json(4002, $validate->getError()); } try { AccountRepository::getInstance()->modifyPwd($accountId, $post['old_password'], $post['password']); } catch (Exception $e) { $this->json(4003, $e->getMessage()); } return $this->json(); } /** * 取消收藏|关注 * * @return Json * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function unCollect(): Json { $accountId = $this->auth['id'] ?? 0; $goodsId = input('post.id/d'); AccountRepository::getInstance()->unCollectGoods($accountId, $goodsId); return $this->json(); } /** * 操作保证金 充值|退回 相应改变额度 * * @return Json * @throws RepositoryException */ public function operateDeposit(): Json { if ($this->request->isPost()) { $accountId = $this->auth['id'] ?? 0; $amount = input('post.value', 0); $type = input('post.type/s', 'recharge'); if (!AccountRepository::getInstance()->isEnough($accountId, $amount, 'deposit')) { return $this->json(4000, '余额不足'); } try { AccountRepository::getInstance()->operateDeposit($accountId, $amount, $type); } catch (RepositoryException $e) { return $this->json(4002, $e->getMessage()); } catch (Exception $e) { CommonRepository::log('保证金充值失败', $e); return $this->json(5001, '充值失败'); } return $this->json(); } return $this->json(4002, '请求方式错误'); } /** * 充值 * * @return Json * @throws GuzzleException */ public function rechargeAmount(): Json { if ($this->request->isPost()) { $accountId = $this->auth['id'] ?? 0; $amount = input('post.amount', 0); $type = input('post.type/s'); if (!$accountId) { return $this->json(4001, '请先登录'); } try { $qr = AccountRepository::getInstance()->recharge($accountId, (float) $amount, $type); return $this->json(0, 'success', ['payment_order_number' => $qr['order_id'], 'code_url' => $qr['qr']]); } catch (Exception $e) { CommonRepository::log('充值失败', $e); return $this->json(5001, '充值失败:'.$e->getMessage()); } } return $this->json(4002, '请求方式错误'); } /** * 重新充值 * * @return Json * @throws GuzzleException */ public function rechargeAgain(): Json { if ($this->request->isPost()) { $accountId = $this->auth['id'] ?? 0; $orderId = input('post.order_id', 0); $type = input('post.type/s'); if (!$accountId) { return $this->json(4001, '请先登录'); } try { $qr = AccountRepository::getInstance()->rechargeAgain($accountId, $orderId, $type); return $this->json(0, 'success', ['payment_order_number' => $qr['order_id'], 'code_url' => $qr['qr']]); } catch (Exception $e) { CommonRepository::log('充值失败', $e); return $this->json(5001, '充值失败:'.$e->getMessage()); } } return $this->json(4002, '请求方式错误'); } /** * 查询订单 * * @return array|Json * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function checkPayment() { if ($this->request->isPost()) { $res['code'] = 0; $res['msg'] = 'success'; $res['data']['paid'] = true; $orderId = input('post.order_id/s', ''); //订单ID $type = input('post.type/s', 'all'); //支付方式 if (!$orderId || !$type) { $res['code'] = 1; $res['msg'] = '参数错误'; return $res; } //根据支付类型 请求接口查询订单 $hasPaid = AccountRepository::getInstance()->hasPaid($orderId, $type); if ($hasPaid) { AccountRepository::getInstance()->paymentLogPaid($orderId, $type); } $res['data']['paid'] = $hasPaid; return $res; } return $this->json(1, '非法请求!'); } /** * 提现 * * @return Json */ public function withdrawal(): Json { if ($this->request->isPost()) { $amount = input('post.amount', ''); $accountId = $this->auth['id'] ?? 0; try { AccountRepository::getInstance()->withdrawal($accountId, $amount); return $this->json(); } catch (Exception $e) { CommonRepository::log('提现失败', $e); return $this->json(5001, '提现失败'); } } return $this->json(1, '非法请求!'); } /** * 获取已有订单号的支付二维码 * * @return Json * @throws GuzzleException */ public function getPaymentQr(): Json { if ($this->request->isPost()) { $type = input('post.type', ''); $orderId = input('post.order_id', ''); try { $codeQr = OrderRepository::getInstance()->generatePaymentQrCode($type, $orderId); return $this->json(0, 'success', ['payment_order_number' => $orderId, 'code_url' => $codeQr]); } catch (Exception $e) { CommonRepository::log('获取支付二维码', $e); return $this->json(5001, '获取支付二维码'); } } } /** * 物流查询 * * @return Json * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function logistics(): Json { $orderId = input('post.order_id'); $type = input('post.type', 'goods'); // $com = 'shunfeng'; // $num = 'SF1980860132707'; if ($type == 'goods') { if (!$delivery = OrderRepository::getInstance()->findExpressByOrder($orderId)) { return $this->json(4001, '物流信息不存在'); } } else { if (!$delivery = OrderRepository::getInstance()->findExpressByAuction($orderId)) { return $this->json(4001, '物流信息不存在'); } } $com = $delivery['express_code']; $num = $delivery['express_number']; return $this->json(0, 'success', ['res' => Kd100::query($com, $num)]); } }