mkOrderSn($uid); $totalIntegral = $integral + $giveIntegral; $bool = $this->insert([ 'order_sn' => $orderSn, 'uid' => $uid, 'recharge_id' => $rechargeId, 'price' => $price, 'integral' => $integral, 'give_integral' => $giveIntegral, 'total_integral' => $totalIntegral, 'pay_type' => $payType, 'paid' => 0, 'pay_time' => 0, 'remark' => $remark, 'admin_id' => $adminId, 'discount_amount' => $discount, 'status' => 0, 'add_time' => time(), 'update_time' => time() ]); return $bool ? $orderSn : null; } /** * 根据订单号获取订单 * @param string $orderSn 订单号 * @return array|null */ public function getByOrderSn($orderSn) { return $this->where('order_sn', $orderSn)->find(); } /** * 根据ID获取订单 * @param int $id 订单ID * @return array|null */ public function getById($id) { return $this->where('id', $id)->find(); } /** * 更新订单支付状态 * @param string $orderSn 订单号 * @param string $paySn 支付流水号 * @param string $payJson 支付返回信息 * @return bool */ public function updatePayStatus($orderSn, $paySn, $payJson = '') { return $this->where('order_sn', $orderSn)->update([ 'paid' => 1, 'pay_sn' => $paySn, 'pay_json' => $payJson, 'pay_time' => time(), 'status' => 1, 'update_time' => time() ]); } /** * 获取用户充值订单列表 * @param int $uid 用户UID * @param array $where 查询条件 * @param string $field 查询字段 * @param int $page 页码 * @param int $pageCount 每页数量 * @param string $order 排序 * @return array */ public function getUserList($uid, $where = [], $field = '*', $page = 1, $pageCount = 20, $order = 'add_time desc') { $where['uid'] = $uid; $data = $this ->where($where) ->field($field) ->order($order) ->paginate(['list_rows' => $pageCount, 'page' => $page]) ->toArray(); return [$data['total'], $data['data']]; } /** * 获取充值订单列表(后台) * @param array $where 查询条件 * @param string $field 查询字段 * @param int $page 页码 * @param int $pageCount 每页数量 * @param string $order 排序 * @return array */ public function getAdminList($where = [], $field = '*', $page = 1, $pageCount = 20, $order = 'add_time desc') { $data = $this ->alias('ro') ->field($field) ->leftJoin('user u', 'u.uid = ro.uid') ->when(!empty($where), function ($query) use ($where) { if (!empty($where['order_sn'])) { $query->where('ro.order_sn', $where['order_sn']); } if (!empty($where['uid'])) { $query->where('ro.uid', $where['uid']); } if (!empty($where['nickname'])) { $query->whereLike('u.nickname', "%{$where['nickname']}%"); } if (!empty($where['mobile'])) { $query->where('u.mobile', $where['mobile']); } if (!empty($where['pay_type'])) { $query->where('ro.pay_type', $where['pay_type']); } if (!empty($where['paid'])) { $query->where('ro.paid', $where['paid']); } if (!empty($where['status'])) { $query->where('ro.status', $where['status']); } if (!empty($where['time']) && !empty($where['time'][0]) && !empty($where['time'][1])) { $startTime = strtotime($where['time'][0]); $endTime = strtotime($where['time'][1]); $query->whereBetween('ro.add_time', "{$startTime},{$endTime}"); } }) ->order($order) ->paginate(['list_rows' => $pageCount, 'page' => $page]) ->toArray(); return [$data['total'], $data['data']]; } /** * 关闭订单 * @param string $orderSn 订单号 * @return bool */ public function closeOrder($orderSn) { return $this->where('order_sn', $orderSn)->update([ 'status' => -1, 'update_time' => time() ]); } }