getUser(); // 获取分页参数 $page = $this->request->param('page', 1); $pageSize = $this->request->param('page_size', 10); // 获取订单列表 $orderQuery = Db::name('order') ->field('goods_id, goods_title, goods_price, order_total, order_zhe_total, price, use_money, use_integral, use_money2, addtime, pay_time, prize_num, use_coupon, order_num') ->where([ 'user_id' => $user['id'], 'status' => 1 ]) ->order('addtime desc'); // 获取总数 $total = $orderQuery->count(); // 获取分页数据 $orderList = $orderQuery->page($page, $pageSize)->select()->toArray(); // 格式化数据 foreach ($orderList as &$order) { // 格式化时间 $order['addtime'] = date('Y-m-d H:i:s', $order['addtime']); $order['pay_time'] = $order['pay_time'] ? date('Y-m-d H:i:s', $order['pay_time']) : ''; // 格式化价格数据 $order['goods_price'] = (float) $order['goods_price']; $order['order_total'] = (float) $order['order_total']; $order['order_zhe_total'] = (float) $order['order_zhe_total']; $order['price'] = (float) $order['price']; $order['use_money'] = (float) $order['use_money']; $order['use_money2'] = (float) $order['use_money2']; } unset($order); // 返回分页数据 $data = [ 'list' => $orderList, 'total' => $total, 'page' => (int) $page, 'page_size' => (int) $pageSize, 'total_pages' => ceil($total / $pageSize) ]; return $this->renderSuccess('获取成功', $data); } /** * 获取订单详情 * * @return \think\Response */ public function getOrderDetail() { // 获取订单编号 $orderNum = $this->request->param('order_num', ''); if (empty($orderNum)) { return $this->renderError('订单编号不能为空'); } // 获取当前登录用户 $user = $this->getUser(); // 获取订单详情 $orderInfo = Db::name('order') ->field('order_num,goods_id, goods_title, goods_price, id, order_total, order_zhe_total, price, use_money, use_integral, use_money2, addtime, pay_time, prize_num, use_coupon') ->where([ 'status' => 1, 'order_num' => $orderNum ]) ->find(); if (!$orderInfo) { return $this->renderError('订单不存在'); } // 格式化时间 $orderInfo['addtime'] = date('Y-m-d H:i:s', $orderInfo['addtime']); $orderInfo['pay_time'] = $orderInfo['pay_time'] ? date('Y-m-d H:i:s', $orderInfo['pay_time']) : ''; // 格式化价格数据 $orderInfo['goods_price'] = (float) $orderInfo['goods_price']; $orderInfo['order_total'] = (float) $orderInfo['order_total']; $orderInfo['order_zhe_total'] = (float) $orderInfo['order_zhe_total']; $orderInfo['price'] = (float) $orderInfo['price']; $orderInfo['use_money'] = (float) $orderInfo['use_money']; $orderInfo['use_money2'] = (float) $orderInfo['use_money2']; // 获取订单商品列表 $orderGoods = Db::name('order_list') ->field('goodslist_title, goodslist_imgurl, goodslist_price, addtime') ->where([ 'order_id' => $orderInfo['id'] ]) ->select()->toArray(); // 格式化订单商品数据 foreach ($orderGoods as &$goods) { $goods['addtime'] = date('Y-m-d H:i:s', $goods['addtime']); $goods['goodslist_price'] = (float) $goods['goodslist_price']; $goods['goodslist_imgurl'] = imageUrl($goods['goodslist_imgurl']); } unset($goods); $orderInfo['goods_list'] = $orderGoods; return $this->renderSuccess('获取成功', $orderInfo); } /** * 发送网页支付订单 * * @return \think\Response */ public function sendWebPayOrder() { // sendCustomerServiceMessage // 获取当前登录用户 $user = $this->getUser(); // 获取订单编号 $orderNum = $this->request->param('order_num', ''); if (empty($orderNum)) { return $this->renderError('订单编号不能为空'); } $platform = \app\common\server\platform\PlatformFactory::create(); $res = $platform->sendCustomerServiceMessage($user, $orderNum); if ($res['status'] == 1) { return $this->renderSuccess('发送成功',$res['data']); } else { return $this->renderError($res['msg']); } } /** * 获取订单状态 * * @return \think\Response */ public function getOrderStatus() { // 获取当前登录用户 $user = $this->getUser(); // 获取订单编号 $orderNum = $this->request->param('order_num', ''); if (empty($orderNum)) { return $this->renderError('订单编号不能为空'); } $orderNotify = OrderNotify::where([ 'order_no' => $orderNum, ])->find(); if (!$orderNotify) { return $this->renderError('订单不存在'); } if ($orderNotify['status'] == 1) { return $this->renderSuccess('支付成功', $orderNotify['status']); } return $this->renderSuccess('支付未完成,请10秒后重试!', $orderNotify['status']); } /** * 创建H5支付订单通知 * * @return \think\Response */ public function createWebPayOrderNotify() { $orderNum = $this->request->param('order_num', ''); if (empty($orderNum)) { return $this->renderError('订单编号不能为空'); } $cache_key = "order:webpay:" . $orderNum; $redis = (new \app\common\server\RedisHelper())->getRedis(); $redis_key_info = $redis->get($cache_key); $orderNotify = OrderNotify::where([ 'order_no' => $orderNum, ])->find(); if (!$orderNotify) { if ($redis_key_info) { $redis->del($cache_key); } return $this->renderError('订单不存在'); } if ($orderNotify['status'] == 1) { if ($redis_key_info) { $redis->del($cache_key); } return $this->renderError('订单已支付'); } if ($orderNotify['status'] == 2) { if ($redis_key_info) { $redis->del($cache_key); } return $this->renderError('订单已失效'); } $res = []; if ($redis_key_info) { $res = json_decode($redis_key_info, true); } else { $platform = new \app\common\server\platform\H5Platform(); $res = $platform->createWebPayOrderNotify($orderNum); if ($res['status'] == 1) { $redis->set($cache_key, json_encode($res), 60 * 30); } } if ($res['status'] == 1) { return $this->renderSuccess('创建成功', $res['data']); } else { return $this->renderError($res['msg']); } } public function getOrderUrlLink() { $order_num = $this->request->param('order_num', ''); if (!empty($orderNum)) { return $this->renderError('订单编号不能为空'); } $order_notify = OrderNotify::where('order_no', $order_num)->find(); $user_id = 0; $extend = []; if ($order_notify == null) { return ['status' => 0, 'msg' => '未找到订单']; } if ($order_notify['status'] == 2) { return ['status' => 0, 'msg' => '订单已失效']; } // $this->appid $web_domain = EnvHelper::getWebDomain(); $returnUrl = ''; if ($order_notify) { if ($order_notify['extend'] == '') { return $this->renderError('订单号错误'); } $extend = json_decode($order_notify['extend'], true); $user_id = $extend['userId']; $order_type = $extend['orderType']; $returnUrl = $extend['returnUrl']; // 1. 提取路径部分 $path = parse_url($returnUrl, PHP_URL_PATH); $path = ltrim($path, '/'); // 2. 提取查询部分 $queryString = parse_url($returnUrl, PHP_URL_QUERY); parse_str($queryString, $paramsArray); $paramsArray['order_num'] = $order_num; $query = http_build_query($paramsArray); $platform = new \app\common\server\platform\MiniProgramPlatform(); $env_version = 'release'; if (EnvHelper::getIsTest()) { $env_version = 'develop'; } $res = $platform->getUrlLink($path, $query, $env_version); if ($res['status'] == 1) { return $this->renderSuccess('获取成功', $res['data']); } } return $this->renderError('获取失败'); } }