mirror of
https://github.com/ProxyPanel/ProxyPanel.git
synced 2026-04-13 07:59:20 +00:00
1. 彻底放弃向闭源版转型,清理掉一批闭源/烂尾的代码;
2. 重新优化优惠券功能的显示与生成;
2.1 现在用户使用优惠券后,购买页面会有优惠券优惠价格等提示;
2.2 支持管理自己定义优惠券代码,可是用HappyNewYear 这样的码了;
3. 管理员页面各搜索功能的BUG修改;
3.1 部分页面的搜索条件添加,以及对之前代码的烂尾进行补全;
3.2 统一代码检查用isset而非 !isEmpty, 来减少误判;
3.3 对搜索在不同设备下的显示进行了优化;
4. 针对html 和 js 项目的代码规范以及简写;
5. 针对 debug方便;添加了debug工具;
提示:请各位在生产环境下关闭debug模式;
110 lines
3.0 KiB
PHP
110 lines
3.0 KiB
PHP
<?php
|
||
|
||
namespace App\Http\Controllers;
|
||
|
||
use App\Components\Helpers;
|
||
use App\Http\Models\Marketing;
|
||
use DB;
|
||
use Exception;
|
||
use GuzzleHttp\Client;
|
||
use Illuminate\Http\Request;
|
||
use Log;
|
||
use Response;
|
||
|
||
/**
|
||
* 促销控制器
|
||
*
|
||
* Class MarketingController
|
||
*
|
||
* @package App\Http\Controllers
|
||
*/
|
||
class MarketingController extends Controller
|
||
{
|
||
protected static $systemConfig;
|
||
|
||
function __construct()
|
||
{
|
||
self::$systemConfig = Helpers::systemConfig();
|
||
}
|
||
|
||
// 邮件群发消息列表
|
||
public function emailList(Request $request)
|
||
{
|
||
$status = $request->input('status');
|
||
|
||
$query = Marketing::query()->where('type', 1);
|
||
|
||
if (isset($status)) {
|
||
$query->where('status', $status);
|
||
}
|
||
|
||
$view['list'] = $query->paginate(15)->appends($request->except('page'));
|
||
|
||
return Response::view('marketing.emailList', $view);
|
||
}
|
||
|
||
// 消息通道群发列表
|
||
public function pushList(Request $request)
|
||
{
|
||
$status = $request->input('status');
|
||
|
||
$query = Marketing::query()->where('type', 2);
|
||
|
||
if (isset($status)) {
|
||
$query->where('status', $status);
|
||
}
|
||
|
||
$view['list'] = $query->paginate(15);
|
||
|
||
return Response::view('marketing.pushList', $view);
|
||
}
|
||
|
||
// 添加推送消息
|
||
public function addPushMarketing(Request $request)
|
||
{
|
||
$title = trim($request->input('title'));
|
||
$content = $request->input('content');
|
||
|
||
if (!self::$systemConfig['is_push_bear']) {
|
||
return Response::json(['status' => 'fail', 'data' => '', 'message' => '推送失败:请先启用并配置PushBear']);
|
||
}
|
||
|
||
DB::beginTransaction();
|
||
try {
|
||
$client = new Client();
|
||
$response = $client->request('GET', 'https://pushbear.ftqq.com/sub', ['query' => ['sendkey' => self::$systemConfig['push_bear_send_key'], 'text' => $title, 'desp' => $content]]);
|
||
|
||
$result = json_decode($response->getBody());
|
||
if ($result->code) { // 失败
|
||
$this->addMarketing(2, $title, $content, -1, $result->message);
|
||
|
||
throw new Exception($result->message);
|
||
}
|
||
|
||
$this->addMarketing(2, $title, $content, 1);
|
||
|
||
DB::commit();
|
||
|
||
return Response::json(['status' => 'success', 'data' => '', 'message' => '推送成功']);
|
||
} catch (Exception $e) {
|
||
Log::info('PushBear消息推送失败:' . $e->getMessage());
|
||
|
||
DB::rollBack();
|
||
|
||
return Response::json(['status' => 'fail', 'data' => '', 'message' => '推送失败:' . $e->getMessage()]);
|
||
}
|
||
}
|
||
|
||
private function addMarketing($type = 1, $title = '', $content = '', $status = 1, $error = '', $receiver = '')
|
||
{
|
||
$marketing = new Marketing();
|
||
$marketing->type = $type;
|
||
$marketing->receiver = $receiver;
|
||
$marketing->title = $title;
|
||
$marketing->content = $content;
|
||
$marketing->error = $error;
|
||
$marketing->status = $status;
|
||
|
||
return $marketing->save();
|
||
}
|
||
} |