| | |
| | | */ |
| | | public function getActivityContentAttr($value) |
| | | { |
| | | return htmlspecialchars_decode($value); |
| | | $value = htmlspecialchars_decode($value); |
| | | return html_entity_decode($value, ENT_QUOTES, 'UTF-8'); |
| | | } |
| | | |
| | | /** |
| | |
| | | { |
| | | if (!$model = parent::detail($activity_id)) { |
| | | throw new BaseException(['msg' => '活动不存在']); |
| | | } |
| | | // 检查活动是否已审核通过 |
| | | if ($model['audit_status'] != 10) { |
| | | throw new BaseException(['msg' => '活动审核未通过或待审核']); |
| | | } |
| | | $model["reg_num"] = ActivityUserModel::getRegNum($activity_id); |
| | | return $model; |
| | |
| | | $list = $model ->with(['image', 'category']) |
| | | ->where('is_delete', '=', 0) |
| | | ->where('status', '=', 1) |
| | | ->where('audit_status', '=', 10) // 只显示审核通过的活动 |
| | | ->order(['sort' => 'asc', 'create_time' => 'desc']) |
| | | ->paginate($params); |
| | | // 检查用户有没有报名 |
| | |
| | | */ |
| | | public function add($data, $branch_id) |
| | | { |
| | | // 检查走访企业30天限制(编辑时排除当前活动) |
| | | if ($data['is_visit'] == 1) { |
| | | $visitCheck = $this->checkVisitLimit($data['visit_supplier_id'], $data['visit_supplier_name']); |
| | | if ($visitCheck) { |
| | | $this->error = '该企业30天内已被走访,还需等待' . $visitCheck['remaining_days'] . '天才可以重新走访'; |
| | | return false; |
| | | } |
| | | } |
| | | $data['app_id'] = self::$app_id; |
| | | $data['branch_id'] = $branch_id; |
| | | //活动时间 |
| | | $data['activity_start_time'] = strtotime($data['start_time']); |
| | | $data['activity_end_time'] = strtotime($data['end_time']); |
| | | $data['activity_start_time'] = strtotime($data['activity_start_time']); |
| | | $data['activity_end_time'] = strtotime($data['activity_end_time']); |
| | | //报名时间 |
| | | $data['register_start_time'] = time(); // 发布的时间即为报名开始时间(小程序端逻辑) |
| | | $data['register_end_time'] = $data['activity_end_time']; // 活动结束时间即为报名结束时间(小程序端逻辑) |
| | | $data['register_start_time'] = strtotime($data['register_start_time']); |
| | | $data['register_end_time'] = strtotime($data['register_end_time']); |
| | | // 处理emoji表情符号 |
| | | $data = $this->filterEmoji($data); |
| | | return $this->save($data); |
| | | } |
| | | |
| | |
| | | public function edit($data) |
| | | { |
| | | //活动时间 |
| | | $data['activity_start_time'] = strtotime($data['start_time']); |
| | | $data['activity_end_time'] = strtotime($data['end_time']); |
| | | $data['activity_start_time'] = strtotime($data['activity_start_time']); |
| | | $data['activity_end_time'] = strtotime($data['activity_end_time']); |
| | | //报名时间 |
| | | $data['register_start_time'] = time(); // 发布的时间即为报名开始时间(小程序端逻辑) |
| | | $data['register_end_time'] = $data['activity_end_time']; // 活动结束时间即为报名结束时间(小程序端逻辑) |
| | | $data['register_start_time'] = strtotime($data['register_start_time']); |
| | | $data['register_end_time'] = strtotime($data['register_end_time']); |
| | | |
| | | // 检查走访企业30天限制(编辑时排除当前活动) |
| | | if ($data['is_visit'] == 1) { |
| | | $visitCheck = $this->checkVisitLimit($data['visit_supplier_id'], $data['visit_supplier_name'], $data['activity_id']); |
| | | if ($visitCheck) { |
| | | $this->error = '该企业30天内已被走访,还需等待' . $visitCheck['remaining_days'] . '天才可以重新走访'; |
| | | return false; |
| | | } |
| | | } |
| | | // 处理emoji表情符号 |
| | | $data = $this->filterEmoji($data); |
| | | return $this->save($data); |
| | | } |
| | | |
| | |
| | | return $this->save(['is_delete' => 1]); |
| | | } |
| | | |
| | | /** |
| | | * 检查用户是否能参与促销活动 |
| | | */ |
| | | public function checkUserShopping($user_id) { |
| | | if (!$this['is_verify']) { |
| | | $this->error = '您还没签到,无法参与购物'; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * 过滤emoji表情符号,转换为HTML实体 |
| | | * @param array $data |
| | | * @return array |
| | | */ |
| | | private function filterEmoji($data) |
| | | { |
| | | if (isset($data['content'])) { |
| | | $data['content'] = $this->emojiToHtml($data['content']); |
| | | } |
| | | if (isset($data['name'])) { |
| | | $data['name'] = $this->emojiToHtml($data['name']); |
| | | } |
| | | if (isset($data['describe'])) { |
| | | $data['describe'] = $this->emojiToHtml($data['describe']); |
| | | } |
| | | return $data; |
| | | } |
| | | |
| | | /** |
| | | * 将emoji表情符号转换为HTML实体 |
| | | * @param string $str |
| | | * @return string |
| | | */ |
| | | private function emojiToHtml($str) |
| | | { |
| | | if (empty($str)) { |
| | | return $str; |
| | | } |
| | | $str = preg_replace_callback( |
| | | '/[\x{1F600}-\x{1F64F}]|[\x{1F300}-\x{1F5FF}]|[\x{1F680}-\x{1F6FF}]|[\x{2600}-\x{26FF}]|[\x{2700}-\x{27BF}]/u', |
| | | function ($matches) { |
| | | return mb_convert_encoding($matches[0], 'HTML-ENTITIES', 'UTF-8'); |
| | | }, |
| | | $str |
| | | ); |
| | | return $str; |
| | | } |
| | | |
| | | } |