where(['status' => StatusEnum::ENABLED]) // ->andWhere(['user_id' => $user_id]) // ->andWhere(['goods_id' => $goods_ids]) // ->andWhere(['order_id' => $order_id]) // ->select('user_form_id')->column(); // // if (empty($user_form_ids)) return null; $form = AddonsSmartFormTemplateUserForm::lists([ 'where' => [ ['user_id' => $user_id], ['order_id' => $order_id] // ['id' => $user_form_ids] ], 'select'=> 'id, smart_form_template_id, created_at', 'with' => ['form' => function($query) { $query->select('id, title'); }, 'formInfo' => function($query) { $query->select('smart_form_template_user_form_id, smart_form_components_code, smart_form_components_title, col_value, smart_form_components_id') ->with(['column' => function($query1) { $query1->select('id, option'); }]); }] ]); $ret = []; foreach ($form as &$item) { foreach ($item['formInfo'] as &$fItem) { $option = null; if (!empty($fItem['column']['option'])) { $option = explode("\n", $fItem['column']['option']); } switch ($fItem['smart_form_components_code']) { case 'drow-box': case 'radio-tool': $fItem['col_value'] = $option[$fItem['col_value']]; break; case 'checked-tool': $vals = explode(",", $fItem['col_value']); $val1 = ""; foreach ($vals as $val) { $val1 .= "{$option[$val]}, "; } $fItem['col_value'] = rtrim($val1, ", "); break; case 'city-chose': $regions = Region::find()->where(['id' => explode(",", $fItem['col_value'])])->select('name')->column(); $fItem['col_value'] = implode(", ", $regions); break; case 'upload-photo': $fItem['col_value'] = explode(",", $fItem['col_value']); break; default: } unset($fItem['column'], $fItem['smart_form_components_id']); } $ret[] = [ 'title' => $item['form']['title'], 'created_at'=> date('Y-m-d H:i:s', $item['created_at']), 'fields' => $item['formInfo'] ]; } return $ret; } /** * @param int $user_id * @param array $goods_ids * @param int $order_id * @param int $user_form_id * @return void */ public static function bindOrderId(int $user_id, array $goods_ids, int $order_id, int $user_form_id) { $update = ['order_id' => $order_id]; $where = ['and', ['send_status' => StatusEnum::DISABLED], ['user_id' => $user_id], ['user_form_id' => $user_form_id], ['order_id' => 0]]; AddonsStartFormSmsNotice::updateAll($update, $where); } /** * @param int $user_id * @param array $goods_ids * @param int $status 0待发送,1可以发送,10发送中,20已过期,30已取消,50发送失败,100发送成功 * @param int $order_id * @param int $user_form_id * @return void */ public static function setStatus(int $user_id, array $goods_ids, int $status, int $order_id, int $user_form_id) { // 只能是 1或者30 - 支付设置为 // 买了一次后,第二次购买不能再发送短信,因为表单只能填写一次 switch ($status) { case 1: $update = ['send_status' => $status, 'order_id' => $order_id]; $where = ['and', ['send_status' => $status == StatusEnum::ENABLED ? StatusEnum::DISABLED : StatusEnum::ENABLED], ['user_id' => $user_id], ['user_form_id' => $user_form_id]]; break; default: $update = ['send_status' => $status]; $where = ['and', ['send_status' => $status == StatusEnum::ENABLED ? StatusEnum::DISABLED : StatusEnum::ENABLED], ['user_id' => $user_id], ['user_form_id' => $user_form_id], ['order_id' => $order_id]]; } AddonsStartFormSmsNotice::updateAll($update, $where); } }