request->param('page', 1); $limit = $this->request->param('limit', 10); $where = [ ['isDel', '=', 0], ['status', '=', 1], ]; $query = TokensPackage::where($where); $total = $query->count(); $list = $query->where($where)->page($page, $limit)->order('sort ASC,id desc')->select(); foreach ($list as &$item) { $item['description'] = json_decode($item['description'], true); $item['discount'] = round(((($item['originalPrice'] - $item['price']) / $item['originalPrice']) * 100),2); $item['price'] = round( $item['price'], 2); $item['unitPrice'] = round( $item['price'] / $item['tokens'],6); $item['originalPrice'] = round($item['originalPrice'] / 100, 2); $item['tokens'] = number_format($item['tokens']); } unset($item); return ResponseHelper::success(['list' => $list, 'total' => $total]); } public function pay() { $id = $this->request->param('id', ''); $price = $this->request->param('price', ''); $userId = $this->getUserInfo('id'); $companyId = $this->getUserInfo('companyId'); if (empty($id) && empty($price)) { return ResponseHelper::error('套餐和自定义购买金额必须选一个'); } if (!empty($id)) { $package = TokensPackage::where(['id' => $id, 'status' => 1, 'isDel' => 0])->find(); if (empty($package)) { return ResponseHelper::error('套餐不存在或者已禁用'); } if ($package['price'] <= 0) { return ResponseHelper::error('套餐金额异常'); } $specs = [ 'id' => $package['id'], 'name' => $package['name'], 'price' => $package['price'], 'tokens' => $package['tokens'], ]; } else { //获取配置的tokens比例 $tokens_multiple = Env::get('payment.tokens_multiple', 28); $specs = [ 'id' => 0, 'name' => '自定义购买算力', 'price' => intval($price * 100), 'tokens' => intval($price * $tokens_multiple), ]; } $orderNo = date('YmdHis') . rand(100000, 999999); $order = [ 'companyId' => $companyId, 'userId' => $userId, 'orderNo' => $orderNo, 'goodsId' => $specs['id'], 'goodsName' => $specs['name'], 'goodsSpecs' => $specs, 'orderType' => 1, 'money' => $specs['price'] ]; $paymentService = new PaymentService(); $res = $paymentService->createOrder($order); $res = json_decode($res, true); if ($res['code'] == 200) { return ResponseHelper::success(['orderNo' => $orderNo, 'code_url' => $res['data']], '订单创建成功'); } else { return ResponseHelper::error($res['msg']); } } public function queryOrder() { $orderNo = $this->request->param('orderNo', ''); $order = Order::where('orderNo', $orderNo)->find(); if (!$order) { return ResponseHelper::error('该订单不存在'); } if ($order->status != 1) { $paymentService = new PaymentService(); $res = $paymentService->queryOrder($orderNo); $res = json_decode($res, true); if ($res['code'] == 200) { return ResponseHelper::success('','订单已支付'); } else { $errorMsg = !empty($order['payInfo']) ? $order['payInfo'] : '订单未支付'; return ResponseHelper::error($errorMsg); } } else { return ResponseHelper::success('','订单已支付'); } } }