| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <?php
- namespace addons\SmartForm\common\service;
- use addons\SmartForm\common\models\AddonsSmartFormTemplateUserForm;
- use addons\SmartForm\common\models\AddonsStartFormSmsNotice;
- use common\enums\StatusEnum;
- use common\models\common\Region;
- class SmsNoticeService
- {
- public static function findByUserIdAndGoodsIds(int $user_id, array $goods_ids, int $order_id)
- {
- // $user_form_ids = AddonsStartFormSmsNotice::find()->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);
- }
- }
|