attributes = get_params(); if (!empty(get_params('is_offline')) && get_params('is_offline') == Order::IS_OFFLINE_TRUE) { $form->is_offline = Order::IS_OFFLINE_TRUE; } else { $form->is_offline = Order::IS_OFFLINE_FALSE; } $form->store_id = $store_id; $form->supplier_id = get_params('supplier_id'); $form->order_id = get_params('order_id'); $form->type = get_params('type'); $form->sort = get_params('sort'); $form->sort_type = get_params('sort_type'); $form->selected_rows = json_decode(get_params('selectedRows')); $form->selected_row_keys = json_decode(get_params('selectedRowKeys')); $form->filters_is_pay = json_decode(get_params('filters_is_pay')); $form->filters_order_types = json_decode(get_params('filters_order_types')); $form->admin = get_admin(); return $this->asJson($form->search()); } /** * 编辑排单或备注 */ public function actionEditSortAndRemark() { $id = (int) get_params('id'); $value = get_params('value'); $column = get_params('column'); $form = Order::findOne($id); if (!$form) { return $this->asJson([ 'code' => 1, 'msg' => '订单未找到', ]); } if ($column == 'pay_price' && $value == $form->pay_price || $column == 'sort' && $value == $form->sort || $column == 'shop_remark' && $value == $form->shop_remark) { return $this->asJson([ 'code' => 0, 'msg' => '无操作', ]); } if (in_array($column, ['sort', 'shop_remark', 'pay_price']) && !empty($value)) { $form->{$column} = $value; } else { return $this->asJson([ 'code' => 1, 'msg' => '无效的列名', ]); } if ($form->save()) { return $this->asJson([ 'code' => 0, 'msg' => '操作成功', ]); } else { return $this->asJson([ 'code' => 1, 'msg' => '操作失败', ]); } } /** * 打印订单 * @return Response */ public function actionPrintOrder() { $selected_rows = json_decode(post_params('selectedRowKeys')); if (!empty($selected_rows)) { $orders = Order::find()->where([ 'is_delete' => 0, 'store_id' => get_store_id(), 'id' => array_values($selected_rows), ])->orderBy('sort ASC')->asArray()->all(); $pay_prices = array_column($orders, 'pay_price'); $totalPayPrice = number_format((float) array_sum($pay_prices), 2); return $this->asJson(['code' => 0, 'msg' => 'success', 'data' => ($orders), 'totalPayPrice' => $totalPayPrice]); } else { try { $order = post_params('order'); $admin = get_admin(); $countNum = count($order); $form = new PrintHistory(); $form->store_id = get_store_id(); $form->mch_id = get_mch_id(); $form->data = json_encode(array_column($order, 'id')); $form->user_name = $admin->name; $form->num = $countNum; $form->created_at = time(); if (!$form->save()) { error_log("Error saving: " . json_encode($form->errors)); return $this->asJson(['code' => 1, 'msg' => '排单记录保存失败']); } } catch (\Exception $e) { error_log("Error saving: " . $e->getMessage()); error_log($e->getTraceAsString()); } } } /** * 发送短信通知 * @param integer $store_id 店铺ID * @param string $mobile 手机号 * @param string $user_name 用户名 * @return array */ public function actionSendNotice() { $mobile = get_params('mobile'); $name = get_params('user_name'); $store_id = get_store_id(); $setting = Notice::findOne(['store_id' => $store_id]); if ($setting && $setting->payment_statement) { $tpl = HelpersJson::decode($setting->payment_statement); if ($tpl && $tpl['sms'] && $tpl['sms']['is_open']) { $res = NoticeAction::sendSms($mobile, $tpl['sms']['template_id'], $tpl['sms']['template_var'], $name, $store_id); if ($res['code'] == 0) { return $this->asJson(['code' => 0, 'msg' => '短信发送成功']); } else { return $this->asJson(['code' => 1, 'msg' => '短信发送失败']); } } } else { return $this->asJson([ 'code' => 1, 'msg' => '请检查付款对账单短信相关配置' ]); } } /** * 确认支付操作 * @return json */ public function actionConfirmPayment() { $form = new ReconciliationOrderForm(); $form->attributes = get_params(); $form->confirm_payment = get_params('confirm_payment') ?? 0; if (!empty(get_params('change_admin_id'))) { $form->change_admin_id = get_params('change_admin_id'); } else { $form->change_admin_id = get_admin(); } return $this->asJson($form->confirmPayment()); } /** * 查询所有的打印历史记录 * @return array */ public function actionPrintHistory() { $printHistories = PrintHistory::find()->orderBy(['id' => SORT_DESC])->all(); $result = []; foreach ($printHistories as $printHistory) { $orderIds = json_decode($printHistory->data, true); $orders = Order::find()->where(['id' => $orderIds])->select(['name', 'sort', 'pay_price', 'order_no'])->orderBy(['sort' => SORT_ASC])->all(); $orderData = []; foreach ($orders as $order) { $orderData[] = $order; } $result[] = [ 'id' => $printHistory->id, 'store_id' => $printHistory->store_id, 'mch_id' => $printHistory->mch_id, 'data' => $printHistory->data, 'order_data' => $orderData, 'user_name' => $printHistory->user_name, 'num' => $printHistory->num, 'created_at' => date('Y-m-d H:i:s', $printHistory->created_at), ]; } return $this->asJson(['code' => 0, 'data' => $result]); } }