$params['title'], 'image' => $params['image'], 'equity_id' => $params['equity_id'], 'origin_price' => $params['origin_price'], 'price' => $params['price'], 'start_time' => strtotime($params['start_time']), 'end_time' => strtotime($params['end_time']), 'participant_num' => $params['participant_num'], 'type' => $params['type'], 'form_time_limit' => $params['form_time_limit'], 'is_online_join' => $params['is_online_join'], 'is_simulate_form' => $params['is_simulate_form'], 'simulate_num' => $params['simulate_num'], 'is_preheat' => $params['is_preheat'], 'is_support_refund' => $params['is_support_refund'], ]); Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } /** * @notes 编辑拼团活动 * @param array $params * @return bool * @author likeadmin * @date 2025/03/13 10:31 */ public static function edit(array $params): bool { Db::startTrans(); try { if ($params['type'] == 1) { $params['price'] = $params['price'][0]; $params['participant_num'] = $params['participant_num'][0]; } else { $params['price'] = implode(",",$params['price']); $params['participant_num'] = implode(",",$params['participant_num']); } if ($params['is_simulate_form'] == 1) { $params['simulate_num'] = $params['type'] == 1 ? $params['simulate_num'][0] : implode(",",$params['simulate_num']); } else { $params['simulate_num'] = ''; } GroupActivity::where('id', $params['id'])->update([ 'title' => $params['title'], 'image' => $params['image'], 'equity_id' => $params['equity_id'], 'origin_price' => $params['origin_price'], 'price' => $params['price'], 'start_time' => strtotime($params['start_time']), 'end_time' => strtotime($params['end_time']), 'participant_num' => $params['participant_num'], 'type' => $params['type'], 'form_time_limit' => $params['form_time_limit'], 'is_online_join' => $params['is_online_join'], 'is_simulate_form' => $params['is_simulate_form'], 'simulate_num' => $params['simulate_num'], 'is_preheat' => $params['is_preheat'], 'is_support_refund' => $params['is_support_refund'], ]); Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } /** * @notes 删除拼团活动 * @param array $params * @return bool * @author likeadmin * @date 2025/03/13 10:31 */ public static function delete(array $params): bool { return GroupActivity::destroy($params['id']); } /** * @notes 获取拼团活动详情 * @param $params * @return array * @author likeadmin * @date 2025/03/13 10:31 */ public static function detail($params): array { return GroupActivity::findOrEmpty($params['id'])->toArray(); } /** * 获取活动二维码 * @return string|void */ public static function getQRCode($params,$url) { try { $savePath = './uploads/group_activity'; $file_name = $savePath.'/123456789'.$params['id'].'.png'; //判断二维码是否存在 if (file_exists($file_name)) { return $url.'/'.$file_name; } // 要生成二维码的 H5 链接 $h5Url = 'https://weixiuadmin.kyjlkj.com?id=' . $params['id']; // 创建一个 PNG 写入器实例 $writer = new PngWriter(); // 创建二维码实例 $qrCode = QrCode::create($h5Url) ->setEncoding(new Encoding('UTF-8')) ->setErrorCorrectionLevel(ErrorCorrectionLevel::High) ->setSize(300) ->setMargin(10) ->setForegroundColor(new Color(0, 0, 0)) ->setBackgroundColor(new Color(255, 255, 255)); // 添加文字标签 $label = \Endroid\QrCode\Label\Label::create('众盾闪修拼团活动') ->setFont(new NotoSans(20)) ->setAlignment(LabelAlignment::Center); // 添加 logo $logoPath = './uploads/group_activity/logo.png'; $logo = Logo::create($logoPath)->setResizeToWidth(80); // 生成二维码图像 $result = $writer->write($qrCode, $logo, $label); // 定义保存二维码的文件路径 if(!is_dir($savePath)){ mkdir($savePath); } // 将二维码保存到本地文件 $result->saveToFile($file_name); return $url.'/'.$file_name; } catch (\Throwable $e) { // 失败 echo $e->getMessage(); } } }